Zdarzenie (informatyka): Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
Kamilmara (dyskusja | edycje)
Linia 50:
 
===Przykładowa aplikacja Windows działająca zdarzeniowo===
<pre>
#include <windows.h>
 
{{Przykładowy kod aplikacji zdarzeniowej}}
static TCHAR lpszAppName[] = TEXT( "API Windows" );
 
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
{
//reakcje na poszczególne zdarzenia wysyłane przez użytkownika
switch (uMsg)
{
case WM_CREATE:
break;
 
case WM_DESTROY:
PostQuitMessage(0);
break;
 
case WM_KEYDOWN:
break;
 
default:
return (DefWindowProc(hWnd, uMsg, wParam, lParam));
 
}
return(0L);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
 
MSG msg;
WNDCLASS wndclass;
HWND hWnd;
 
//definicja okna
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = MainWndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = NULL;
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = lpszAppName;
 
if(RegisterClass(&wndclass) == 0)
return FALSE;
 
hWnd = CreateWindow(lpszAppName, lpszAppName,
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
if(hWnd == NULL)
return FALSE;
 
//pokazanie okna
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
 
//pętla oczekująca na przychodzące zdarzenia
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
 
return msg.wParam;
}
</pre>
 
==Zdarzenie z dziennika zdarzeń==