WinAPI - pierwsze starcie

Writing /home/grochu/public_html/wiki/data/cache/4/4a8ee671b9a73d38e55b581e5feda41a.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/4/4a8ee671b9a73d38e55b581e5feda41a.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/0/060df495e65a3f9d3937ccd7e8f90f22.i failed
Writing /home/grochu/public_html/wiki/data/cache/0/060df495e65a3f9d3937ccd7e8f90f22.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/4/4a8ee671b9a73d38e55b581e5feda41a.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ąć?