Systemy operacyjne Wykład 3a Działanie aplikacji okienkowej dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki

Slides:



Advertisements
Podobne prezentacje
Programowanie Windows
Advertisements

Jarosław Kuchta Komunikaty w Windows.
Programowanie obiektowe
Prezentacja o MS-DOS’ie
PROGRAMOWANIE STRUKTURALNE
Mateusz Srebrny 15 grudnia 2003 Motif, okienka i obiekty Mateusz Srebrny 15 grudnia 2003.
.NET - możliwości Jarosław Balcer & Jan Góralski.
Programowanie Lokalnych Aplikacji .NET
Systemy operacyjne Wykład nr 5: Wątki Piotr Bilski.
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Ćwiczenie (1) Dostosuj poniższy program do swojego programy zaliczeniowego. (Plik z programem jest dostępny pod adresem
Systemy operacyjne.
Systemy operacyjne Bibliografia:
Temat nr 10: System przerwań
1 Języki i techniki programowania prowadzący dr Grzegorz Filipczyk.
Język Java Wielowątkowość.
Wątki.
Visual C++ Zastosowania Informatyki Wykład 6 Copyright, 2003 © Adam Czajka.
C# Windows Forms Zastosowania Informatyki Wykład 3
C# Windows Forms Zastosowania Informatyki Wykład 2
Podstawy programowania
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Programowanie w Środowisku Windows Common controls.
LabVIEW Technologie informacyjne – laboratorium Irmina Kwiatkowska
Programowanie w Środowisku Windows
Tadeusz Ziębakowski Zachodniopomorski Uniwersytet Technologiczny.
Podstawy programowania II
Wielozadaniowowść systemu operacyjnego Linux
Podstawy WINAPI - MessageBOX
PL/SQL Zajęcia nr II PL/SQL(2) M. Rakowski - WSISiZ.
Temat: Operacje na plikach i folderach str.
Projekt jest współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego.
Uruchamiamy moduł APW44 - Komunikacja
Przystawka Zarządzanie dyskami
Prezentacja i szkolenie
Programowanie obiektowe – zastosowanie języka Java SE
Programowanie w Środowisku Windows
Przerwanie ang. interrupt.
Przeglądanie zasobów komputera - uruchamianie programów
Programowanie komponentowe jesień-zima 2013
Tworzenie Aplikacji Internetowych dr Wojciech M. Gańcza 8.
Okienkowy system operacyjny
Wykład 7 Synchronizacja procesów i wątków
Systemy operacyjne (wiosna 2014)
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1.
Oprogramowanie komponentowe w środowisku Microsoft Katarzyna Kuźniar 4 FDA, C1.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Tworzenie graficznego interfejsu użytkownika (GUI)
Formatowanie dokumentów
VISUAL BASIC FOR APLICATION (VBA)
Grafika animacyjna w Macromedia Flash ACTION SCRIPT Joanna Sekulska-Nalewajko Katedra Informatyki Stosowanej Politechnika Łódzka 2006/2007.
Android - cykl życia aplikacji, przykład prostej aplikacji
Podsłuchiwanie klawiatury z użyciem mechanizmu Windows Hooks
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Komunikaty Windows Jacek Matulewski 22 września 2012 Programowanie Windows
Wykład 9 Programowanie w Windows 1.Programowanie zdarzeniowe 2.Zdarzenia obsługiwane przez Windows 3.Aplikacja obsługująca klawisz myszki 4.AppWizard PO9-1.
Wykład 10 Programowanie w Windows 1.Aplikacja dialogowa (Dialog Based) PO10-1 / 26.
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
Portal edukacyjny J A V A S C R I P T JĘZYK PROGRAMOWANIA STRON HTML Opracowała: Anna Śmigielska.
Hooks w systemie Windows Autorzy: Paweł Kwiecień, Wojciech Kruczkowski Temat: Modelowanie użytkowników Zadaniem jest stworzenie (lub modyfikacja) systemu,
Usługa e-Załączniki Automatyzacja usługi - nowy kanał komunikacyjny Izba Celna w Białej Podlaskiej Prezentuje Leszek Krasa Biała Podlaska, dn r.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
AudaPad / AudaShare AudaShare PRO (2.8)
Grafika i komunikacja człowieka z komputerem
Programowanie obiektowe – zastosowanie języka Java SE
Wstęp - Prosta aplikacja internetowa w technologii Java EE 5
Tworzenie graficznego interfejsu użytkownika (GUI)
Zapis prezentacji:

Systemy operacyjne Wykład 3a Działanie aplikacji okienkowej dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki 1

Programowanie zdarzeniowe Ideą programowania zdarzeniowego jest to, że zaimplementowane przez nas funkcje nie są wywoływane jawnie w kodzie programu, lecz przez system operacyjny lub wydzielony moduł programu. Funkcje te nazywa się zwrotnymi (callback). Jest to nawiązanie do idei przerwań Komunikaty: Funkcje obsługujące tzw. kolejkę komunikatów pochodzących od systemu lub: mysz; klawiatura; zmiana w interfejsie graficznym programu; zegar; operacje plikowe lub sieciowe. Wyjątki: Funkcje obsługujące błędy czasu wykonywania mogące wystąpić w programie: operacje arytmetyczne (np. dzielenie przez zero); operacje wejścia / wyjścia (brak pliku, brak połączenia sieciowego); błędy adresowania pamięci (przekroczenie zakresu tablicy, nieistniejący obiekt).

Zdarzeniowy model aplikacji 3 System Windows bazuję na komunikatach, które zarządzają stanem aplikacji. Komunikaty informują aplikacje o tym co się dzieje w systemie. - komunikaty poleceń (ang. command messages) - wysyłane w celu wykonania jakiejś czynności -komunikaty powiadomień (ang. notification messages) - dla powiadomienia aplikacji lub systemu o wystąpieniu zdarzenia. Komunikaty przetwarzane są w kolejce 1. wystąpienie zdarzenia - system umieszcza je w kolejce komunikatów, 2. process pobiera komunikat z kolejki 3. komunikat jest wysyłany pod adresem okna docelowego, 4. jeżeli w procedurze okna, uwzględniono jego obsługę, jest ona wywoływana, w przeciwnym wypadku obsługa w sposób domyślny

Komunikaty okna: WM_CREATE -Procedura obsługi okna otrzymuje ten komunikat podczas wykonywania przez system operacyjny funkcji CreateWindow. WM_PAINT -Większość programów pracujących pod kontrolą systemu Windows wywołuje funkcję UpdateWindow podczas inicjalizacji w funkcji WinMain zaraz przed uruchomieniem pętli komunikatów. W ten sposób system wysyła do procedury okna pierwszy komunikat WM_PAINT, który informuje procedurę okna o konieczności wypełnienia obszaru klienta. Następnie procedura okna otrzymuje komunikat WM_PAINT zawsze wtedy, gdy ma miejsce jedno z następujących zdarzeń: - wcześniej zasłonięty obszar okna jest odsłaniany w wyniku zmiany pozycji innego okna przez użytkownika; - użytkownik zmienia rozmiar okna (jeżeli styl klasy okna posiada flagi CS_HREDRAW i CS_VREDRAW); - program wykorzystuje funkcje ScrollWindow lub ScrollDC do przewinięcia części jego obszaru klienckiego; - program używa funkcji InvalidateRect lub InvalidateRgn do jawnego wygenerowania komunikatu WM_PAINT. WM_DESTROY -Komunikat informujący o tym, że system rozpoczął proces niszczenia okna na żądanie użytkownika. Komunikaty niekolejkowane Komunikaty kolejkowane 4

WM_KEYDOWN -Komunikaty wysyłane do okna podczas wciskania lub zwalniania WM_KEYUPniesystemowego przycisku klawiatury. Parametry: -wParam określa kod jego wirtualnego przycisku. WM_COMMAND -Komunikat wysyłany gdy użytkownik wybiera polecenie menu lub gdy kontrolka wysyła komunikat do okna nadrzędnego. Parametry: -wParam (high-word) ma wartość 0 dla poleceń menu, a w przypadku kontrolki, specyficzny dla niej kod powiadomienia; - wParam (low-word) określa identyfikator pola menu lub kontrolki; -lParam ma wartość 0 dla poleceń menu lub określa uchwyt okna kontrolki. WM_LBUTTONDOWN -Komunikaty wysyłane gdy użytkownik wciska (zwalnia) lewy (prawy) przycisk WM_LBUTTONUPmyszy podczas, gdy kursor znajduje się w obszarze klienckim okna. Parametry: WM_RBUTTONDOWN-wParam określa jakie wirtualne przyciski są wciśnięte: WM_RBUTTONUPMK_CONTROL – przycisk CTRL, MK_LBUTTON – lewy przycisk myszy, MK_MBUTTON – środkowy przycisk myszy, MK_RBUTTON – prawy przycisk myszy, MK_SHIFT – przycisk SHIFT; - lParam (low-word) określa współrzędną x kursora; - lParam (high-word) określa współrzędną y kursora. WM_MOUSEMOVE -Komunikat wysyłany do okna podczas ruchu kursora. Parametry komunikatu są identyczne jak w przypadku wciskania i zwalniania przycisków myszy. 5

Budowa aplikacji Windows 6 Aplikacja Windows działa w następujących fazach: Tworzymy tzw klasę okna, definiujemy jego wygląd wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } Tworzymy w pamięci instancję okna hwnd = CreateWindow (szAppName, TEXT ("The Hello Program"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ;

Budowa aplikacji Windows 7 Uruchamiamy nieskończoną pętlę przetwarzania komunikatów while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } Funkcja DispatchMessage uruchamia tzw funkcję okna, w której możemy obsłużyć komunikaty LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_LBUTTONDOWN : MessageBox(hwnd, “Zostal wcisniety lewy przycisk myszy…", „Informacja", MB_ICONINFORMATION | MB_OK); return 0; case WM_CLOSE: if (IDCANCEL == MessageBox(hwnd, „Czy chcesz zamknac program?", „Pytanie", MB_ICONQUESTION | MB_OKCANCEL)) return 0; else break; case WM_DESTROY : PostQuitMessage(0); return 0; } return DefWindowProc (hwnd, message, wParam, lParam); } Komunikaty obsłużone przez użytkownika nie powinny trafić do domyślnej procedury okna ‘DefWindowProc’. W tym celu po obsłużeniu komunikatu należy wyjść z procedury zwracając wartość zero. Wszystkie komunikaty, których nie obsłużył użytkownik, trafiają do domyślnej procedury okna ‘DefWindowProc’.

Program WINAPI Funkcja WinMain Procedura obsługi okna 1 Procedura obsługi okna 2 System operacyjny Kolejka komunikatów Definiowanie klas okien programu Rejestracja zdefiniowanych klas Utworzenie okna głównego Wyświetlenie okna głównego Obsługa komunikatów okna 1 Obsługa komunikatów okna 2 Pobranie komunikatu Przekazanie komunikatu Pętla komunikatów Reakcja systemu na zdarzenie HWND WM_COMMAND LPARAM WPARAM HWND WM_CLOSE 0 0 HWND WM_DESTROY 0 0 HWND WM_QUIT 0 0