Spójrzmy na najprostrzy program w WinAPI:

#include <windows.h>

INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR lStart,INT nShow)
{
  
//tutaj będziemy pisać program

  return
0
;
}

Pliki nagłówkowe WinAPI

Zacznijmy od pierwszej linijki kodu. Widzimy tam dołączenie pliku nagłówkowego "windows.h". Jest to uniwersalny plik nagłówkowy, który łączy w sobie wszystkie najważniejsze pliki nagłówkowe WinAPI. Interfejs WinAPI składa się w wielu różnych plików nagłówkowych, są one podzielone na różne kategorie funkcji. My decydujemy jakie funckje będą nam potrzebne w programie i w zależności od tego dołączamy odpowiednie pliki. Na początek proponuję zacząć od uniwersalnego pliku "windows.h", w którym na początek będzie wszystko czego potrzebujemy. W kompilatorze Dev C++, pliki nagłówkowe powinny być umieszczone w folderze "inculde", który znajduje się w katalogu z zainstalowanym kompilatorem. Zajrzyjmy do środka tego folderu. Zobaczymy tam mnóstwo plików nagłówkowych. Większość plików WinAPI, zaczyna się na "win" i po tym można je rozpoznać.

Teraz przedstawię najważniejsze pliki WinAPI:
commctrl.h - dzięki temu plikowi możemy swobodnie używać fucnkji pochodzących z systemowej biblioteki comctrl32.dll
mmsystem.h - udostępnia funkcje związane z obsługa multimediów.
shellapi.h - zawiera funkcje pochodzące z biblioteki shell32.dll
w32api.h - mały plik nagłówkowy, w którym są odpowiednie deklaracje wersji systemów operacyjnych.
winbase.h - podstawowy plik nagłówkowy, zawiera deklaracje funkcji, pochodzących z biblioteki jądra systemu kernel32.dll
wincon.h - zawiera funckje do obsługi konsoli przez system windows.
windef.h - zawiera definicje windowsowych typów zmiennych.
windows.h - uniwersalny plik nagłówkowy WinAPI, łączy w sobie najważniejsze pliki nagłówkowe WinAPI.
wingdi.h - są w nim funckje pochodzące z biblioteki gdi32.dll
winnet.h - dzięki niemu możemy używać fucnkji umożliwiających pracę z internetem.
winreg.h - umożliwia obsługę rejestru przez nasz program.
winuser.h - siedzą tu funckje z biblioteki user32.dll

Funkcja główna

W konsoli główną funkcją naszego programu był "main", w WinAPI funkcja główna jest trochę inna, jej nazywa to "WinMain", jest ona odpowiednikiem main z konsoli. Jak widać funkcja główna przekazuje do naszego programu 4 parametry.

Parametr pierwszy jest typu HINSTANCE. Jest to uchwyt, o którym była mowa w poprzedniej lekcji. HINSTANCE to uchwyt naszego procesu w windowsie. Uruchamiając nasz program stworzyliśmy nowy proces, nasz proces(program) dostał swój numer, czyli uchwyt. W tym parametrze przekazywany jest właśnie uchwyt naszego procesu.

Drugi parametr jest także typu HINSTANCE, jednak obecnie się go nie używa, jest on pozostałością z systemów 16-bitowych, w aplikacjach systemów 32-bitowych został on zachowany tylko ze względu na zgodność starych programów dla tych systemów. Jak widzisz nie nadaję mu nazwy, co oznacza, że nie będę go używał.

Trzeci parametr jest typu LPSTR. Jest to windowsowy typ wskaźnika do tablicy znaków(łańcucha znaków). Innymi słowy zmienna ta przechowuje wskaźnik do tekstu. Konkretniej w tej zmiennej system przekazuje naszemu programowi, z jakiej ścieżki został uruchomiony. Więcej o tym parametrze w innej lekcji.

Czwarty parametr jest typu INT. Zawiera on informację jak powinno zostać pokazane okno u naszym programie.

Wychodząc powinniśmy zwrócić 0, tak jak w funkcji main. W ten sposób informujemy system o poprawnym wykonaniu naszej funkcji WinMain, czyli naszego programu.

Co nam daje funkcja WinMain? Otóż, jak juz wspomniałem jest odpowiednikiem funkcji main z konsoli, więc jest ona wejściową i wyjściową funkcją w programie, program po uruchomieniu rozpoczyna wykonywanie od początku tej funkcji, a kończy swoje działanie na wyjściu z niej.

Po skompilowaniu tegoż programu nie zobaczymy nic, bo nasz program otwiera się i zamyka tak jak to miało miejsce w konsoli.

Jak widzisz WinAPI to wiele nowych typów zmiennych, funkcji.

No i to chyba na tyle w tej lekcji, w kolejnej zajmiemy sie tworzeniem okna w tej funkcji.