Czym jest Windows Application Programmer Interface

Download Report

Transcript Czym jest Windows Application Programmer Interface

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/enus/library/ee663300(v=VS.85).aspx
Stary wygląd: http://msdn.microsoft.com/enus/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:
o Jeffrey Richter, Christopher Nasarre
Windows via C/C++ (wydanie 5),
Microsoft Press, Warszawa 2009
o Johnson M. Hart
Programowanie w systemie Windows (wydanie 4),
Helion 2010
o 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