Documente Academic
Documente Profesional
Documente Cultură
Home / My courses / PWINDOWS / Capitolul 1. Concepte fundamentale. Partea 2 / HelloWin modificat (de la Charles Petzold)
Pentru a vedea ce înseamnă cu adevărat această paradigmă bazată pe evenimente și cum funcționează, vom considera o aplicație GUI simplă
„HelloWin” care rulează pe Windows. Aplicația este scrisă în C, folosind antica Interfață pentru Programarea Aplicațiilor Windows (API), pe care
Microsoft a dezvoltat-o încă din anii '80. Spre deosebire de alte API-uri Windows, mai moderne și alte limbaje de programare, această API Win32 de
nivel scăzut în C demonstrează conceptele principale ale programării bazate pe evenimente în forma lor cea mai simplă și directă.
Așadar, haideți să parcurgem această aplicație Windows simplă, care este adaptarea programului „Hello, Windows 95” din cartea „Programarea în
Windows” a lui Charles Petzold. Această carte, publicată pentru prima dată în 1988, a devenit biblia pentru programarea Windows în acea vreme.
/*******************************************************************
*******************************************************************/
LRESULT CALLBACK WndProc(HWND me, UINT sig, WPARAM wParam, LPARAM lParam);
/*----------------------------------------------------------------
*/
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(szCmdLine);
wnd.cbSize = sizeof(wnd);
wnd.cbClsExtra = 0;
wnd.cbWndExtra = 0;
wnd.hInstance = hInstance;
wnd.lpszMenuName = NULL;
wnd.hIconSm = NULL;
wnd.lpszClassName = "HelloWin";
RegisterClassEx(&wnd);
hwnd = CreateWindow(
ShowWindow(hwnd, iShowCmd);
UpdateWindow(hwnd);
while (1) {
status = msg.wParam;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
return status; // return to Windows with the status of processing
/*----------------------------------------------------------------
* of this application
*/
break;
}
PostQuitMessage(0);
break;
}
PAINTSTRUCT ps;
HDC hdc;
RECT rect;
char cBuffer[100];
(wm_keydown_ctr % 1000),
(wm_mousemove_ctr % 1000),
led_text);
GetClientRect(me, &rect);
break;
}
++wm_keydown_ctr;
break;
}
++wm_mousemove_ctr;
break;
}
break;
}
}