Ślad: • notatki • vs_wstep • pliki • dll • sidebar • 10_napisy • linkownia • zajecia03 • sidebar • wstep_pierwsze_okno

WinAPI - pierwsze starcie

Writing /home/grochu/public_html/wiki/data/cache/6/636d46a13c03257b83ded8f9be4c4038.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/6/636d46a13c03257b83ded8f9be4c4038.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/5/53fd7f559e3410205c367a6bfbcad74b.i failed
Writing /home/grochu/public_html/wiki/data/cache/5/53fd7f559e3410205c367a6bfbcad74b.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/6/636d46a13c03257b83ded8f9be4c4038.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.

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 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:

Hello World 2 - pusty projekt

  • Utwórz pusty projekt Win32 i dodaj plik źródłowy z funkcją główną WinMain
int WINAPI WinMain( HINSTANCE hInstance, 
                    HINSTANCE hPrevInstance, 
                    LPSTR lpCmdLine, 
                    int nCmdShow)
  • Dodaj MessageBox z wyświetlający komunikat „Hello World” z ikonką informacyjną i przyciskiem OK.

Pierwsze okno

  • Utwórz i zarejestruj klasę okien WNDCLASSEX
  • Domyślna procedura okna
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    return DefWindowProc(hwnd, msg, wParam, lParam);
}
while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
  • Obsłuż komunikaty WM_CLOSE i WM_DESTROY
  • Przed zamknięciem wyświetl MessageBox z zapytaniem czy na pewno zamknąć?