Programowanie Windows (Win32/Win64 API)

15
Programowanie Windows (Win32/Win64 API) Jacek Matulewski 17 września 2012 http://www.fizyka.umk.pl/~jacek/dydaktyka/winprog/

description

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 - PowerPoint PPT Presentation

Transcript of Programowanie Windows (Win32/Win64 API)

Page 1: Programowanie Windows (Win32/Win64 API)

Programowanie Windows (Win32/Win64 API)

Jacek Matulewski17 września 2012

http://www.fizyka.umk.pl/~jacek/dydaktyka/winprog/

Page 2: Programowanie Windows (Win32/Win64 API)

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.

Page 3: Programowanie Windows (Win32/Win64 API)

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

Page 4: Programowanie Windows (Win32/Win64 API)

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)

Page 5: Programowanie Windows (Win32/Win64 API)

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

Page 6: Programowanie Windows (Win32/Win64 API)

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

Page 7: Programowanie Windows (Win32/Win64 API)

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

Page 8: Programowanie Windows (Win32/Win64 API)

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)

Page 9: Programowanie Windows (Win32/Win64 API)

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

Page 10: Programowanie Windows (Win32/Win64 API)

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

Page 11: Programowanie Windows (Win32/Win64 API)

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+

Page 12: Programowanie Windows (Win32/Win64 API)

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

Page 13: Programowanie Windows (Win32/Win64 API)

Historia WinAPI

• Windows 1.0 – 450 funkcji

• Windows 7 – tysiące!(ale te 450 nadal jest)

Page 14: Programowanie Windows (Win32/Win64 API)

Ź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/

Page 15: Programowanie Windows (Win32/Win64 API)

Ź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