====== Pierwsze starcie. Tworzenie okien. ======
===== Co trzeba znać ? =====
* powtórka obowiązkowa C/C%%++%%
* wskaźniki, struktury, typedef, makra, wskaźniki do funkcji, łańcuchy znakowe, alokacja pamięci, itd...
===== Hello World =====
* Utwórz **pusty** projekt Win32 i dodaj plik źródłowy z funkcją główną [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633559%28v=vs.85%29.aspx|WinMain]]
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
* Dodaj [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx|MessageBox]] z wyświetlający komiunukat "Hello World" z ikonką informacyjną i przyciskiem OK.
===== Pierwsze okno =====
* Utwórz i zarejestruj klasę okien [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633577%28v=vs.85%29.aspx|WNDCLASSEX]]
* Domyślna procedura okna
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
return DefWindowProc(hwnd, msg, wParam, lParam);
}
* Utwórz okno zgodne z zarejestrowaną klasą
* [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms632680%28v=vs.85%29.aspx|CreateWindowEx]]
* [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548%28v=vs.85%29.aspx|ShowWindow]]
* [[https://msdn.microsoft.com/en-us/library/windows/desktop/dd145167%28v=vs.85%29.aspx|UpdateWindow]]
* Pętla główna komunikatów
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
* Obłóż komunikaty ''WM_CLOSE'' i ''WM_DESTROY''
* Niszczenie okna [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms632682%28v=vs.85%29.aspx|DestroyWindow]]
* [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms644945%28v=vs.85%29.aspx|PostQuitMessage]]
* Przed zamknięciem wyświetl MessageBox z zapytaniem czy napewno zamknąć?