Edytuj stronę Odnośniki Fold/unfold all ODT export Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić. ====== WinAPI - pierwsze starcie ====== ===== Co trzeba znać ? ===== * powtórka obowiązkowa C/C%%++%%, C# * wskaźniki, struktury, typedef, makra, wskaźniki do funkcji, łańcuchy znakowe, alokacja pamięci, itd... ===== Hello World - szablon projektu VS ===== * Utwórz projekt Win32 wykorzystując szablon projektu dostępny w Visual Studio i zapoznaj się z zawartością tego szablonu (funkcja WinMain, typy zmiennych i konwencja nazewnicza WInAPI, rejetracja okna, tworzenie okna głównego, pętla komunikatów, zasoby, itp.). * Dodaj [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx|MessageBox]] z wyświetlający komunikat "Hello World" z ikonką informacyjną i przyciskiem OK. * Przed zamknięciem aplikacji (okna głownego) wyświetl MessageBox z zapytaniem czy na pewno zamknąć? * Dodaj do okna przynajmniej jedną kontrolkę, np. przycisk (BUTTON), kontrolkę edycyjną (EDIT), pole statyczne (STATIC) Przydatne referencje: * [[https://msdn.microsoft.com/en-us/library/windows/desktop/bb773169%28v=vs.85%29.aspx|Control library (MSDN)]] ===== Hello World 2 - pusty projekt ===== * 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]] <code C> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) </code> * Dodaj [[https://msdn.microsoft.com/en-us/library/windows/desktop/ms645505%28v=vs.85%29.aspx|MessageBox]] z wyświetlający komunikat "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 <code C> LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { return DefWindowProc(hwnd, msg, wParam, lParam); } </code> * 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 <code C> while(GetMessage(&Msg, NULL, 0, 0) > 0) { TranslateMessage(&Msg); DispatchMessage(&Msg); } </code> * Obsłuż 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 na pewno zamknąć?