|
Kaikkein käyttökelpoisin
C/Win32 API -ohjelma josta on hyvä jatkaa eteenpäin:
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
HINSTANCE hInstance;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
MSG msg;
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof (wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH) COLOR_WINDOW;
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = "OmaLuokka";
wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
RegisterClassEx (&wndclass);
HWND hwnd = CreateWindow ("OmaLuokka", "OmaOhjelma", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
ShowWindow (hwnd, iCmdShow);
UpdateWindow (hwnd);
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
static HWND hwndGroupbox;
static HFONT hFont;
switch (iMsg)
{
case WM_CREATE :
hFont = (HFONT) GetStockObject(DEFAULT_GUI_FONT) ;
hwndGroupbox = CreateWindowEx(NULL, "button", "OmaOhjelma",
WS_CHILD | WS_VISIBLE | BS_GROUPBOX, 0, 0, 0, 0,
hwnd, (HMENU) 0, hInstance, NULL);
SendMessage (hwndGroupbox, WM_SETFONT, (WPARAM) hFont, MAKELPARAM(TRUE, 0));
return 0;
case WM_COMMAND:
return 0;
case WM_SIZE:
MoveWindow (hwndGroupbox, 10, 10, LOWORD(lParam)-20, HIWORD(lParam)-20, TRUE);
return 0;
case WM_DESTROY:
PostQuitMessage (0);
return 0;
}
return DefWindowProc (hwnd, iMsg, wParam, lParam);
}
Lisäykset:
- Ohjelma osaa käyttää oikeaa
systeemifonttia
- Lomakkeelle piirretään
kehyskontrolli
- Lomaketta voi suurentaa ja pienentää
ja WM_SIZE sanoma skaalaa kehyksen sitä mukaa
|