Code: Alles auswählen
//
//
//
#include <windows.h>
/* Callback Deklarieren */
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
/* Klassen Name */
char szClassName[ ] = "WindowsApp";
/* Ähnlich int Main() bei Konsole */
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil)
{
HWND hwnd; /* Handle zum Fenster */
MSG messages; /* Nachrichten an das Fenster */
WNDCLASSEX wincl; /* Struktur für Die Fensterklasse */
/* Fenster struktur */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* Hier wird das Callback angegeben */
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof(WNDCLASSEX);
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* Kein Menü */
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
/* Registriert die Klasse */
if(!RegisterClassEx(&wincl)) return 0;
/* Fenster erstellen */
hwnd = CreateWindowEx(
0,
szClassName, /* Klassenname */
"Mein Fenster", /* TitelText */
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
544, /* Breite */
375, /* Höhe */
HWND_DESKTOP, /* Child Fenster vom Desktop */
NULL, /* Keine Menu */
hThisInstance,
NULL
);
/* Fenster wird angezeigt*/
ShowWindow(hwnd, nFunsterStil);
/* Hauptschleife */
while(GetMessage(&messages, NULL, 0, 0))
{
/* Virtual Key in Nachricht umwandeln */
TranslateMessage(&messages);
/* Nachricht an Callback senden */
DispatchMessage(&messages);
}
return messages.wParam;
}
/* Callback, aufgerufen von DispatchMessage */
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND button;
switch (message)
{
case WM_DESTROY: /* Beenden */
PostQuitMessage(0);
return 0;
case WM_CREATE: /*Buttons erstellen*/
button = CreateWindow(
"Button",
"Beenden",
WS_CHILD | WS_VISIBLE,
20, 30, 200, 100,
hwnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL
);
return 0;
case WM_SIZE: /*Buttons rezisen*/
MoveWindow(button, LOWORD(lParam) / 2 - 80, HIWORD(lParam) - 40,
160, 22, TRUE);
return 0;
case WM_COMMAND: /*Button events*/
{
if (lParam == (LPARAM)button)
{
if (HIWORD(wParam) == BN_CLICKED)
SendMessage(hwnd, WM_DESTROY, 0, 0);
}
return 0;
}
return 0;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}