Programowanie Windows (Win32/Win64 API) Jacek Matulewski 17 września 2012 http://www.fizyka.umk.pl/~jacek/dydaktyka/winprog/
O czym będzie ten wykład: Tworzenie aplikacji dla systemu Windows z użyciem interfejsu programisty Win32 Aplikacje z graficznym interfejsem użytkownika (GUI). Przede wszystkim MFC, mniej VCL. Powłoka systemu Windows (Windows Shell). Podstawy programowania sieciowego. Wszystkich funkcji jest tysiące. My wycinek.
O czym nie będzie: Win16 i Win32s, .NET/CLR, WinRT Zakładam znajomość podstaw C/C++ (if, for, while, switch). Jeżeli trzeba powtórzę wskaźniki i klasy. Zakładam znajomość podstaw ang. - MSDN Skupię się raczej na rdzeniu WinAPI, niż na nowościach (np. z Windows 8) DirectX/OpenGL – osobny wykład
Co to jest Windows API? Windows API = WinAPI = Win32 API API = application programming interface Interfejs programistyczny pozwalający na dostęp do funkcjonalności Windows z poziomu kodu. Zbiór bibliotek DLL z eksportowanymi funkcjami. Dostęp do niemal wszystkich funkcjonalności Windows (częściowo poza bezpieczeństwem) Windows SDK (m.in. nagłówki C do DLL)
Zasadnicze biblioteki Win32 API: Base services (jądro) – kernel32.dll podstawowe funkcje systemu plików – nie mylić z funkcjami z shell32.dll, obsługa urządzeń peryferyjnych, wątki, obsługa błędów – ale nie wyjątki
Zasadnicze biblioteki Win32 API: Advanced services – advapi32.dll rejestr systemu Windows (baza danych), zamykanie i restart systemu, usługi Windows, obsługa kont użytkowników
Zasadnicze biblioteki Win32 API: Graphics Device Interface – gdi32.dll warstwa abstrakcyjna dla urządzeń wyjścia korzystających z grafiki obsługa urządzeń wyjścia m.in. monitor, drukarka kontakt ze sterownikami urządzeń GDI, obsługa czcionek i palet kolorów, rysowanie okien, kontrolek, menu itp., Od Windows XP: GDI+ (C++) Windows Vista/7: Windows Display Driver Model
Zasadnicze biblioteki Win32 API: User Interface – user32.dll podstawowe kontrolki Windows tworzące GUI: przyciski, paski przewijania, pola wyboru itp. obsługa zarówno wejścia (mysz, klawiatura), jak i wyjścia (zmiana wyglądu kontrolki) Od Windows XP obsługa kontrolek zgromadzona jest w bibliotece comctl32.dll (Common Control Library), też: pasek stanu, zakładki, itp. Nakładki: MCF, ATL, VCL (Borland), Qt, Gimp Toolkit (GTK), AWT (Java), WF (.NET)
Zasadnicze biblioteki Win32 API: Common Dialog Boxes Library – comdlg32.dll okna dialogowe udostępniane przez Windows: 1) wczytywanie i zapisywanie pliku, 2) wybór czcionki, wybór koloru, 3) przeszukiwanie i zastępowanie, 4) okna związane z drukowaniem
Zasadnicze biblioteki Win32 API: Windows Shell (powłoka systemu Windows) shell32.dll wyższa warstwa API (nad jądrem i GUI), CopyFile[Ex], MoveFile itd. (kernel32.dll) vs SHFileOperation i IFileOperation (od Vista) WinExec (Win16) i CreateProcess (kernel32.dll) vs ShellExecute Na funkcjach powłoki bazuje Eksplorator Windows i częściowo narzędzia administracyjne
Zasadnicze biblioteki Win32 API: Networking services NetBIOS = Network Basic I/O System, WinSock = Windows Sockets API (obsługa TCP/IP) RPC = remote procedure call NetDDE, DDE = dynamic data exchange por. też. DCOM, COM+
Zasadnicze biblioteki Win32 API: Desktop Windows Manager (DWM) Windows Management Instrumentation (WMI) Windows Internet (WinINet) Active Directory Cryptography Image Mastering API (IMAPI) Media Control Interface (MCI) i wiele innych
Historia WinAPI Windows 1.0 – 450 funkcji Windows 7 – tysiące! (ale te 450 nadal jest)
Źródła MSDN – podstawowe źródło wiedzy: Nowy wygląd: http://msdn.microsoft.com/en-us/library/ee663300(v=VS.85).aspx Stary wygląd: http://msdn.microsoft.com/en-us/library/windows/desktop/hh447209(v=vs.85).aspx Inne strony: EFNet #Winprog: http://www.winprog.org/tutorial/ Adam Boduch (Delphi): http://4programmers.net/ Dla programistów .NET: http://www.pinvoke.net/
Źródła Książki: Jeffrey Richter, Christopher Nasarre Windows via C/C++ (wydanie 5), Microsoft Press, Warszawa 2009 Johnson M. Hart Programowanie w systemie Windows (wydanie 4), Helion 2010 Jacek Matulewski, Maciej Pakulski, Dawid Borycki, Bartosz Biały, Piotr Pepłowski, Michał Matuszak, Daniel Szlag, Dawid Urbański Visual C++. Gotowe rozwiązania dla programistów Windows, Helion 2010