160 likes | 375 Views
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
E N D
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).aspxStary 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
Zaliczenie • Lab.: projekt (obowiązkowy)Wybór z listy do końca październikaWłasny po mojej akceptacji • Lab.: referat lub kolokwium (pisanie kodu)Wybór tematu referatu z listy do końca wrześniaReferat na lab. („ręce na klawiaturze”) lub na wykładziePrezentacja (ppt/pdf) + 2 pytania • Wykład: egzaminTeoretyczny (bez programowania na żywo)