Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);



Podobne dokumenty
Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam);

Programowanie w środowisku Windows. mgr inż. Krzysztof Mossakowski k.mossakowski@mini.pw.edu.pl

Programowanie na poziomie sprzętu. Programowanie w Windows API

Podstawy programowania w języku C dla środowiska Windows

IFiZR Laboratorium 5 Info

Programowanie w języku C++ z użyciem Windows API

Projektowanie i programowanie aplikacji biznesowych. Wykład 2

Wprowadzenie do programowania w Windows

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie I. Wprowadzenie do programowania w Windows

Podstawowy projekt OpenGL utworzony przy użyciu środowisk programistycznych firmy Microsoft.

Podstawy programowania w języku C dla środowiska Windows

Komunikaty w Windows. Jarosław Kuchta

Do nich też i tylko do nich będzie się w tym rozdziale odnosić sam termin okno.

Dodanie nowej formy do projektu polega na:

1 WSTĘP. Źródło : Wymagania i terminologia

Rozdział II. Praca z systemem operacyjnym

POMOC / INSTRUKCJA OBSŁUGI

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM

Skróty klawiaturowe w systemie Windows 10

Temat: Organizacja skoroszytów i arkuszy

Formaty plików graficznych - wprowadzenie

1. Opis okna podstawowego programu TPrezenter.

System Informatyczny CELAB. Terminy, alarmy

Arkusz strona zawierająca informacje. Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze.

Podstawy technologii cyfrowej i komputerów

PROE wykład 8 Interfejs użytkownika (GUI) dr inż. Jacek Naruniec

Spis treści 1. Wstęp Logowanie Główny interfejs aplikacji Ogólny opis interfejsu Poruszanie się po mapie...

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

1. Wstęp Niniejszy dokument jest instrukcją użytkownika dla aplikacji internetowej DM TrackMan.

Laboratorium - Podgląd informacji kart sieciowych bezprzewodowych i przewodowych

Podstawy programowania w środowisku Windows. Oto identyfikatory najczęściej obsługiwanych meldunków (przedrostek WM to skrót od Windows message):

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Laboratorium z Grafiki InŜynierskiej CAD. Rozpoczęcie pracy z AutoCAD-em. Uruchomienie programu

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

1.1. Programowanie dla Windows. Programowanie dla Windows. Komunikaty w systemie Windows. Application Programming Interface

Opis ikon OPIS IKON. Ikony w pionowym pasku narzędzi: Ikony te używane są przy edycji mapy. ta ikona otwiera szereg kolejnych ikon, które pozwalają na

Dodawanie operacji dodatkowych w WAPRO Mag.

Komputery I (2) Panel sterowania:

Voicer. SPIKON Aplikacja Voicer V100

Tworzenie prezentacji w MS PowerPoint

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

1. Wstęp. 2. Szablon. 1 WinApi Wstęp i szablon. Czym jest API?

Dell Display Manager podręcznik użytkownika

Uruchamianie programu

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

etrader Pekao Podręcznik użytkownika Jak zacząć pracę z etrader Pekao?

PRZEWODNIK PO ETRADER PEKAO ROZDZIAŁ I. JAK ZACZĄĆ PRACĘ Z ETRADER PEKAO? SPIS TREŚCI

Programowanie współbieżne. Tworzenie i obsługa semaforów oraz wątków przy użyciu funkcji Windows API.

bla bla Guard podręcznik użytkownika

System operacyjny Windows

Instalacja i obsługa aplikacji MAC Diagnoza EW

OPIS PROGRAMU USTAWIANIA NADAJNIKA TA105

Podręczna pomoc Microsoft Power Point 2007

Podręcznik użytkownika programu. Ceremonia 3.1

Instrukcja użytkownika

System Informatyczny CELAB. Pożywkarnia

Załącznik do ćwiczenia w środowisku MASM32 wersji 10. Tryb graficzny w systemie Windows

Zegary. Zegary (timers) umożliwiają cykliczne w danych odstępach czasu wykonać określone operacje.

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

DesignCAD 3D Max 24.0 PL

INSTRUKCJA UŻYTKOWNIKA Definicje księgowe ISO 9001:2008 Dokument: Wydanie: Definicje księgowe

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP

Lista wprowadzonych zmian w systemie Vario v. 3.3 od wydania do wydania

Rozdział 2. Konfiguracja środowiska pracy uŝytkownika

Jak dodać własny szablon ramki w programie dibudka i dilustro

Instrukcja użytkownika aplikacji modernizowanego Systemu Informacji Oświatowej

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

etrader Pekao Podręcznik użytkownika Informacje rynkowe

Systemy operacyjne i sieci komputerowe Szymon Wilk Konsola MMC 1

Instrukcja instalacji oprogramowania Flow!Works na komputerze z systemem Windows 7

PRZEWODNIK PO ETRADER PEKAO ROZDZIAŁ XVI. INFORMACJE RYNKOWE SPIS TREŚCI

Ćwiczenia z systemu operacyjnego WINDOWS

Defekty Mr Buggy 4. Znane, nieznane i literówki (wybrane)

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows Vista

Moduł rozliczeń w WinSkład (od wersji 18.40)

1. Wprowadzenie. 1.1 Uruchamianie AutoCAD-a Ustawienia wprowadzające. Auto CAD Aby uruchomić AutoCada 14 kliknij ikonę

Instrukcja modułu BKD - Wykonawca

Edytor tekstu MS Office Word

Visual Studio instalacja

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

WinSkład / WinUcz 15.00

Instrukcja instalacji i obsługi modemu ED77 pod systemem operacyjnym Windows 98 SE (wydanie drugie)

Jak przesłać mapę do urządzenia lub na kartę pamięci?

Moduł rozliczeń w WinUcz (od wersji 18.40)

Wprowadzenie (17) Część I. Makra w Excelu - podstawy (23)

Programowanie pod Windows

I. Program II. Opis głównych funkcji programu... 19

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Rys.1. Uaktywnianie pasków narzędzi. żądanych pasków narzędziowych. a) Modelowanie części: (standardowo widoczny po prawej stronie Przeglądarki MDT)

WINDOWS XP PRO WINDOWS XP PRO

Rejestracja faktury VAT. Instrukcja stanowiskowa

Czcionki bezszeryfowe

Platforma zakupowa GRUPY TAURON

Transkrypt:

1. Pierwszy program pod Windows 1/8 Procedura okna: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); UINT unsigned int DWORD 32-bitowy unsigned int. LPSTR - wskaźnik do łańcuch znaków tzn. char * LPCTSTR wskaźnik na stały łańcuch znaków tzn. const char* LPVOID - 32-bitowy wskaźnik na wartość o nieokreślonym typie. LPARM - 32-bitowa wartość przesyłana jako parametr funkcjom typu CALLBACK. WPARAM Wartość przesyłana jako parametr funkcjom typu CALLBACK 16-bitowa w Windows w wersji 3.0 i 3.1; 32-bitowa w Win32. HINSTANCE uchwyt wystąpienia jednoznacznie identyfikuje program. HWND Uchwyt okna CALLBACK, WINAPI wskazują na specjalną sekwencję wywołań dla funkcji, jaka występuje między Windows i aplikacją. int WINAPI WinMain(HINSTANCE hinst,hinstance hprevinst, LPSTR cmdparam, int cmdshow); hinst - uchwyt wystąpienia - jednoznacznie identyfikujący program hprevinstance poprzednie wystąpienie. W wersjach Windows przed Windows 95 zwracał uchwyt ostatnio uruchomionego wystąpienia tego samego programu, który nadal działał w systemie. W Windows 95 zawsze NULL, jeśli zachodzi potrzeba sprawdzania czy program jest już uruchomiony to należy użyć funkcji CreateMutex. cmdparm - wskaźnik do ciągu znaków zakończonego zerem, zawierającego parametry przekazane do programu w chwili jego uruchomienia. cmdshow - określa sposób w jaki okno pojawi się po raz pierwszy na pulpicie Windows (SW_SHOWNORMAL, SW_SHOWMINNOACTIVE) W typowej funkcji WinMain rejestruje się klasę okna (RegisterClassEx), tworzy się okno (CreateWindow), pokazuje się okno (ShowWindow) oraz tworzy się blok kodu zwany pętlą komunikatów. ATOM RegisterClassEx(CONST WNDCLASSEX *lpwcx); lpwcx - wskaźnik na strukturę WNDCLASSEX

1. Pierwszy program pod Windows 2/8 WNDCLASSEX: cbsize - zwykle odpowiada: sizeof(wndclassex) style - style klasy składane przy pomocy operatora or np. CS_HREDRAW CS_VREDRAW lpfnwndproc - daleki wskaźnik na procedurę obsługi okna (podajemy nazwę wcześniej zadeklarowanej procedury okna) np. (WNDPROC)WndProc cbclsextra - rozmiar dodatkowego obszaru pamięci w strukturze klasy. Program może z niego korzystać na własny użytek. (zwykle 0) cbwndextra - rozmiar dodatkowego obszaru pamięci w strukturze okna Program może z niego korzystać na własny użytek. (zwykle 0) hinstance - wystąpienie programu (hinstance z parametru wywołania WinMain) hicon wyznacza uchwyt ikony (HICON) dla wszystkich okien opartych na tej klasie. Można skorzystać z jednej z ikon zdefiniowanych w Windows lub utworzyć własną ikonę dla swojego programu. W celu uzyskania uchwytu ikony korzystamy z funkcji LoadIcon, której pierwszy parametr równa się NULL dla predefiniowanej ikony i hinstance uchwyt wystąpienia programu - dla zaprojektowanej przez siebie ikony. Drugi parametr jest identyfikatorem ikony.(np. LoadIcon(hInstance, (LPCTSTR) IDI_APPLICATION). (IDI_APPLICATION, IDI_ASTERISK, IDI_INFORMATION, IDI_ERROR, IDI_HAND, IDI_EXCLAMATION, IDI_WARNING, IDI_QUESTION) hcursor - postać kursora myszy jaką przyjmie wskaźnik myszy umieszczony nad oknem klasy (np. LoadCursor(NULL, IDC_ARROW) hbrbackground - kolor tła obszaru roboczego okna. Przypisujemy uchwyt pędzla (HBRUSH). Pędzel rozumiemy jako barwny wzorzec stosowany do wypełnienia dowolnego obszaru. Windows ma wiele standardowych pędzli. (np. (HBRUSH)COLOR_WINDOW lub (HBRUSH)GetStockObject(WHITE_BRUSH) GetStockObject pobiera obiekt graficzny i zwraca uchwyt do niego. Tutaj zwraca uchwyt pędzla białego) lpszmenuname - nazwa menu okna ze skryptu zasobów lub NULL lpszclassname - nazwa klasy np. (LPCTSTR)"MojaKlasa" hiconsm - mała ikona wszystkich okien opartych na klasie (np. LoadIcon(hInstance,(LPCTSTR) IDI_APPLICATION)

1. Pierwszy program pod Windows 3/8 Class Style CS_ (WNDCLASSEX) CS_BYTEALIGNCLIENT - pozioma współrzędna początku pola roboczego okna jest wielokrotnością liczby 8 CS_BYTEALIGNWINDOW - pozioma współrzędna okna jest wielokrotnością liczby 8 (optymalizacja operacji na mapach bitowych) CS_CLASSDC - jeden kontekst urządzenia dla wszystkich okien klasy CS_DBLCLKS - wysyła komunikat o podwójnym kliknięciu do procedury okna gdy użytkownik kliknął podwójnie w obszarze okna. CS_GLOBALCLASS ustawia, że klasa okna jest globalną klasą aplikacji tzn. jest dostępna dla wszystkich modułów programu. CS_HREDRAW - unieważnia cały obszar roboczy okna podczas zmiany szerokości okna, normalnie unieważniony jest tylko obszar zmiany (dzięki temu cały obszar roboczy będzie odświeżany przy każdorazowej zmianie szerokości okna) CS_NOCLOSE - wyłącza komendę Zamknij w menu systemowym okna. CS_OWNDC - alokuje osobny kontekst urządzenia dla każdego okna klasy, co zostanie zmienione w kontekście pozostaje zmienione do czasu jawnego odwołania np. pędzel, pióro, tryb odwzorowania. Styl ten wpływa jedynie na kontekst urządzenia otrzymany w wyniku wywołania GetDC oraz BeginPaint CS_PARENTDC ustawia kontekst urządzenia dla okna typu child w oknie jego rodzica, aby okno child mogło rysować w oknie rodzica. Okno z ustawionym CS_PARENTDC otrzymuje kontekst urządzenie z systemowej pamięci kontekstów urządzeń. CHILD nie otrzymuje kontekstu urządzenia rodzica lub jego ustawień. (Pozbawia okna w stylu WS_CHILD własnego kontekstu urządzenia.) CS_SAVEBITS - powoduje, że system próbuje przed wyświetleniem okna zapamiętać poprzednią zawartość tego obszaru w postaci mapy bitowej. W chwili usunięcia okna następuje próba odtworzenia okna z zapamiętanej mapy nie wysyłając do okna komunikatu WM_PAINT. CS_VREDRAW - unieważnia cały obszar roboczy okna podczas zmiany wysokości okna, normalnie unieważniony jest tylko obszar zmiany.

1. Pierwszy program pod Windows 4/8 HWND CreateWindowEx(DWORD dwexstyle, LPCTSTR lpclassname, LPCTSTR lpwindowname, DWORD dwstyle,int x, int y, int nwidth, int nheight, HWND hwndparent, HMENU hmenu, HANDLE hinstance, LPVOID lpparam); dwexstyle określa rozszerzony styl okna lpclassname - nazwa klasy okna np. sznazwaklasy lub predefiniowane: BUTTON, COMBOBOX, EDIT, LISTBOX, SCROLLBAR, MDICLIENT, STATIC. Przy pomocy tej nazwy wiążemy okno z klasą okna. lpwindowname - nagłówek okna np. Pierwszy program dwstyle - styl okna np. WS_OVERLAPPEDWINDOW x początkowe położenie lewego górnego rogu okna na osi x względem lewego górnego rogu ekranu. Używając CW_USEDEFAULT pozwalamy Windows na użycie swoich domyślnych ustawień. y początkowe położenie lewego górnego rogu okna na osi y względem lewego górnego rogu ekranu nwidth - początkowy rozmiar okna wzdłuż osi x ( można użyć CW_USEDEFAULT) nheight - początkowy rozmiar okna wzdłuż osi y hwndparent - uchwyt okna nadrzędnego, NULL - brak okna nadrzędnego hmenu - uchwyt menu okna, może być NULL jeśli w definicji klasy okna zostało podane lpszmenuname. Jeżeli okno jest typu WS_CHILD hmenu specyfikuje identyfikator okna wartość liczbową używany przez okno do informowania jego rodzica o wystąpieniu zdarzenia. Aplikacja wyznacza identyfikator okna typu WS_CHILD, który musi być unikalny dla okien tego samego rodzica. hinstance - uchwyt wystąpienia programu lpparam - dodatkowe parametry inicjalizacji można nimi przekazać pewne dane oknu, z których można skorzystać w trakcie pracy programu, NULL - brak parametrów Funkcja CreateWindow zwraca uchwyt do tworzonego okna. ExtendedWindowStyle WS_EX_ (CreateWindowEx) WS_EX_ACCEPTFILES okno akceptuje pliki drag-drop WS_EX_CLIENTEDGE część robocza okna posiada zanurzone brzegi WS_EX_CONTEXTHELP okno posiada w prawym górnym rogu przycisk pomocy, po naciśnięciu którego kursor przyjmuje kształt strzałki ze znakiem zapytania. Okno to nie może posiadać stylów WS_MAXIMIZEBOX ani WS_MINIMIZEBOX. WS_EX_CONTROLPARENT Umożliwia przełączanie pomiędzy oknami-dziećmi danego okna za pomocą klawisza TAB. WS_EX_TOOLWINDOW Okno narzędzi - posiada mniejszą belkę tytułową, nie jest widoczne na pasku zadań. WS_EX_TOPMOST - okno znajduje się zawsze na wierzchu, nawet kiedy nie jest aktywne. WS_EX_WINDOWEDGE okno ma ramkę z podniesionym brzegiem WS_EX_PALETTEWINDOW Suma stylów WS_EX_WINODOWEDGE, WS_EX_TOOLWINDOW I WS_EX_TOPMOST.

1. Pierwszy program pod Windows 5/8 WindowStyle WS_ (CreateWindow) WS_BORDER - okno z cienką ramką WS_CAPTION - jak WS_BORDER i dodatkowo pasek tytułowy okna WS_CHILD-okno potomne(nie może mieć paska menu, nie można używać z WS_POPUP) WS_CHILDWINDOW = WS_CHILD WS_CLIPCHILDREN - z obszaru unieważnionego (do odświeżenia) zostają usunięte obszary zakryte przez okna potomne (styl używany przy tworzeniu okien rodziców). WS_CLIPSIBLINGS Spina okna potomne powiązane ze sobą. Kiedy konkretne okno otrzymuje WM_PAINT ten styl powoduje spięcie nachodzących na siebie okien potomnych i odświeżanie tylko obszarów nie zakrytych okna. Jeżeli ten styl nie jest wyspecyfikowany i okna potomne nachodzą na siebie, jest możliwe, że kiedy następuje rysowanie w obszarze roboczym jednego okna przemalowujemy obszar okna zakrywającego. WS_DISABLED - tworzy okno nieaktywne, tj. takie, które nie może otrzymywać komunikatów od użytkownika. Po utworzeniu okna jego włączanie i wyłączanie odbywa się za pomocą funkcji EnableWindow. WS_DLGFRAME - tworzy okno o ramce jak typowe okno dialogowe, Okno w tym stylu nie może posiadać paska tytułowego. WS_GROUP - wyznacza pierwsze okno z grupy okien. Grupa składa się z tego pierwszego okna i wszystkich następnych które są tworzone aż do następnego okna w stylu WS_GROUP. Zwykle dodawany jest styl WS_TABSTOP, aby użytkownik mógł przemieszczać się z jednej grupy do drugiej. WS_HSCROLL - tworzy okno z poziomym paskiem przewijania. WS_ICONIC - okno na starcie zminimalizowane, styl tożsamy z WS_MINIMIZE. WS_MAXIMIZE - okno na starcie rozwinięte na cały ekran. WS_MAXIMIZEBOX - okno wyposażone w przycisk rozwijania na cały ekran. Nie można łączyć z WS_EX_CONTEXTHELP. Musi być połączone z WS_SYSMENU. WS_MINIMIZE = WS_ICONIC. WS_MINIMIZEBOX - okno wyposażone w przycisk zwijania okna do ikony. Nie można łączyć z WS_EX_CONTEXTHELP. Musi być połączone ze stylem WS_SYSMENU. WS_OVERLAPPED = WS_TILED - okienko wyposażone w pasek tytułowy i ramkę. WS_OVERLAPPEDWINDOW - okienko w stylu WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX i WS_MAXIMIZEBOX. Tożsame z WS_TILEDWINDOW. WS_POPUP - nie można używać z WS_CHILD. WS_POPUPWINDOW = WS_BORDER, WS_POPUP i WS_SYSMENU. Styl WS_CAPTION musi być dodany żeby menu było widoczne. WS_SIZEBOX=WS_THICKFRAME - z ramką umożliwiającą zmianę wymiarów okna. WS_SYSMENU - dodaje do okna menu systemowe. WS_CAPTION musi być dodany. WS_TABSTOP - określa czy okno otrzymuje sterowanie (focus) po naciśnięciu klawisza TAB WS_THICKFRAME = WS_SIZEBOX. WS_TILED = WS_OVERLAPPED. WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW. WS_VISIBLE - okno widoczne w momencie inicjalizacji. Ten styl może być włączany i wyłączany za pomocą funkcji ShowWndow i SetWindowPos WS_VSCROLL - okno wyposażone w pasek przewijania pionowego.

1. Pierwszy program pod Windows 6/8 BOOL ShowWindow(HWND hwnd, int cmdshow) hwnd uchwyt do utworzonego okna cmdshow wartość przekazana w parametrach funkcji WinMain. Pętla komunikatów: MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); // przekazanie komunikatu do systemu, w celu // przekształcenia niektórych komunikatów wysłanych z // klawiatury DispatchMessage(&msg); } funkcja pobierająca komunikat z kolejki BOOL GetMessage(LPMSG lpmsg, HWND hwnd, UINT wmsgfiltermin, UINT wmsgfiltermax) lpmsg - adres na strukturę przechowującą komunikat (MSG) hwnd - uchwyt okna dla którego nastąpiło zdarzenie. NULL oznacza, że funkcja pobiera komunikaty dla wszystkich okien aplikacji. wmsgfiltermin liczba całkowita określająca identyfikator pierwszego komunikatu, który ma być pobrany wmsgfiltermax - ostatni komunikat Jeżeli chcemy aby funkcja pobierała tylko zdarzenia związane z klawiaturą należy filtr ustawić na WM_KEYFIRST I WM_KEYLAST, z myszą WM_MOUSEFIRST, WM_MUSELAST. Jeżeli oba parametry mają wartość 0 funkcja pobiera wszystkie dostępne komunikaty. GetMessage zwraca wartość różną od zera, z wyjątkiem przypadku gdy pole message równa się WM_QUIT. W przypadku błędu funkcja zwraca 1. Definicja struktury MSG, przechowującej informacje na temat komunikatu, ma następującą postać. typedef struct tagmsg { HWND hwnd; // uchwyt okna adresata komunikatu UINT message; // identyfikator komunikatu. Każdy komunikat ma własny identyfikator. WPARAM wparam;// 32 bitowy parametr komunikatu, którego znaczenie i wartość zależy // od samego komunikatu LPARAM lparam;// dodatkowy 32 bitowy parametr komunikatu DWORD time; POINT pt; }MSG; // czas określający moment umieszczenia komunikatu w kolejce // współrzędne myszy w chwili gdy komunikat został umieszczony w // kolejce. Struktura POINT składa się z dwóch pól: long x, long y. Funkcja przekazująca komunikat do procedury okna: LONG DispatchMessage(CONST MSG *lpmsg)

1. Pierwszy program pod Windows 7/8 WM_DESTROY komunikat ten oznacza, że Windows jest w trakcie usuwania okna. Komunikat jest wynikiem kliknięcia przycisku Zamknij lub klawiszy [ALT+F4]. Standardowa reakcja to zakończenie działania aplikacji po przez wysłanie komunikatu WM_QUIT. Jeżeli nie obsłużymy tego komunikatu Windows zamknie okno, ale aplikacja nie zakończy działania. funkcja umieszczająca w kolejce komunikatów komunikat WM_QUIT (wraca bezpośrednio) VOID PostQuitMessage(int nexitcode) nexitcode - kod zakończenia działania aplikacji. Tą wartości przechowuje parametr wparam komunikatu WM_QUIT. typowe użycie w procedurze okna: case WM_DESTROY: PostQuitMessage(0); break; Pętla komunikatów i procedura okna nie działają współbieżnie. Powrót z DispatchMessage nie nastąpi dopóki nie zakończy się przetwarzanie komunikatu w procedurze okna. Procedura okna może uruchamiać się rekurencyjnie przez wysyłanie komunikatów. Wszystkie komunikaty, którymi procedura okna się nie zajmuje muszą być przekazane do funkcji DefWindowProc. Wartość zwracana przez DefWindowProc musi być jednocześnie wartością zwracaną przez procedurę okna. LRESULT DefWindowProc( HWND hwnd // uchwyt okna UINT msg // identyfikator komunikatu WPARM wparm // pierwszy parametr komunikatu LPARM lparm //drugi parametr komunikatu );

1. Pierwszy program pod Windows 8/8 Podstawowe rodzaje okien: Overlapped okno najwyższego poziomu. Posiada pasek tytułowy, ramkę, obszar roboczy. Może służyć jako główne okno aplikacji. Może posiadać menu, przycisk minimalizacji i maksymalizacji oraz paski przewijania. Pop-up Specjalny rodzaj okna typu overlapped, używane do tworzenia okienek dialogowych, messagebox-ów i innych tymczasowych okienek używanych poza głównym oknem aplikacji. Pasek tytułowy jest opcjonalny dla okien typu pop-up. W przeciwnym wypadku okno typu pop-up jest takie same jak okno typu overlapped z stylem: WS_OVERLAPPED. Child okno potomne posiada styl: WS_CHILD i jest ograniczone ramami obszaru swojego rodzica. Okno typu CHILD musi posiadać rodzica. Rodzicem może być okno typu overlapped, pop-up lub nawet typu child. Okno tego typu posiada tylko obszar roboczy, chyba że zapotrzebowanie na inne właściwości okna będzie bezpośrednio zgłoszone. Okno typu CHILD nie może mieć menu. Pozycja okno tego rodzaju jest ustawiana względem górnego lewego rogu okna rodzica. Żadna z części okna typu child nie jest wyświetlana poza ramami okna jego rodzica. Niektóre akcje które dotyczą rodzica mogą mieć wpływ na jego potomstwo: Zamykanie okno potomne jest zamykane zanim rodzic zostanie zamknięty Ukrywanie okno potomne jest ukrywane przed rodzicem. Okno potomne jest widoczne tylko wtedy gdy jego rodzic jest widoczny Przesuwanie okno potomne jest przesuwane razem z rodzicem Okno typu child jest odpowiedzialne za odrysowanie swojego obszaru roboczego po przesunięciu. Wyświetlanie - okno potomne ukazuje się po wyświetleniu jego rodzica. System wysyła komunikaty bezpośrednio do okna potomnego. Jedyny wyjątek stanowi przypadek gdy okno jest nieaktywne, wtedy komunikat jest wysyłany do jego rodzica. Okno potomne wysyła komunikat o zajściu zdarzenia do okna nadrzędnego. Owned Okno typu overlapped lub pop-up może być własnością innego okna overlapped lub pop-up. Okno typu owned jest zawsze przed oknem właściciela. Okno jest zawsze zamykane kiedy okno właściciela jest zamykane. Okno jest ukryte jeżeli okno właściciel jest zminimalizowane. Okno tego typu tworzymy wpisując uchwyt właściciela w parametrze hwndparent w funkcji CrateWindowEx.