Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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.

Podobne prezentacje


Prezentacja na temat: "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."— Zapis prezentacji:

1 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 / 29

2 Program proceduralny i zdarzeniowy Program proceduralny wykonuje kolejne funkcje krok po kroku. Jeśli czeka na zdarzenie, to na zdarzenie ściśle określone w danym momencie (wprowadzenie danych, wybór opcji menu, naciśnięcie klawisza itp.). Program zdarzeniowy wykonuje funkcje w odpowiedzi na zdarzenia. Czeka na dowolne zdarzenie przewidziane do obsługi. PO9-2 / 29

3 Program proceduralny Zdefiniuj początkowe obiekty i zainicjuj je Start Czekaj na zdarzenie (np. na wprowadzenie danych) Stop Przykład Przetwarzaj dane Czekaj na zdarzenie (np. na zapisanie wyników) Zamknij aplikację PO9-3 / 29

4 Program zdarzeniowy Zdefiniuj początkowe obiekty i zainicjuj je Start Czekaj na zdarzenie Czy zamknąć aplikację? NieTak Wykonaj funkcję obsługi zdarzenia Wykonaj funkcję obsługi zdarzenia i zamknij aplikację Stop PO9-4 / 29

5 Obsługa zdarzenia Przekaż obsługę zdarzenia do aplikacji Czy aplikacja obsłuży je? NieTak Wykonaj funkcję obsługi zdarzenia Przekaż obsługę zdarzenia do Windowsa PO9-5 / 29

6 Zdarzenia obsługiwane przez Windows 1.Zdarzenia generowane przez klawiaturę 2.Zdarzenia generowane przez mysz PO9-6 / 29

7 Komunikaty klawiatury System Windows ma wbudowane mechanizmy obsługi komunikatów zdarzeń pochodzących od: klawiatury i myszki. afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); Klawiatura generuje komunikaty: WM_CHAR– gdy klawisz jest naciśnięty, WM_KEYDOWN– podczas naciskania klawisza, WM_KEYUP– podczas zwalniania klawisza. Zdarzenia te są obsługiwane przez funkcje: PO9-7 / 29

8 Komunikaty myszki Naciśnięcie i zwolnienie lewego, prawego przycisku myszki oraz podwójne naciśnięcie (dwuklik) lewego i prawego przycisku wysyłają komunikaty: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_RBUTTONDOWN, WM_RBUTTONUP, WM_LBUTTONDBLCLK, WM_RBUTTONDBLCLK. afx_msg void OnLButtonUp (UINT nFlags, CPoint point); W odpowiedzi na te zdarzenia system wywołuje funkcje: OnLButtonDown, OnLButtonUp, OnRButtonDown, OnRButtonUp, OnLButtonDblClk oraz OnLButtonDblClk o identycznym zestawie parametrów jak poniżej: PO9-8 / 29

9 Komunikaty myszki 2 point zawiera współrzędne myszki ( point.x, point.y ) nFlags jest mapą bitową afx_msg void OnLButtonUp (UINT nFlags, CPoint point); Za pomocą parametru point system przekazuje do funkcji współrzędne myszki względem lewego górnego rogu okna dialogowego. Aby przeliczyć te współrzędne na współrzędne ekranowe, należy wywołać funkcję BOOL GetCursorPos(CPoint *point); Mapa bitowa nFlags zawiera następujące bity, które ustawione oznaczają: MK_LBUTTON – naciśnięto lewy przycisk myszki, MK_MBUTTON – naciśnięto środkowy przycisk myszki, MK_RBUTTON – naciśnięto prawy przycisk myszki, MK_CONTROL – Ctrl był naciśnięty podczas zdarzenia, MK_SHIFT – Shift był naciśnięty podczas zdarzenia. PO9-9 / 29

10 Przykład afx_msg void CMyDlg::OnLButtonUp (UINT nFlags, CPoint point) { CString s; CPoint P(point); GetCursorPos(&P); s.Format("Pozycja myszy=(%d, %d) " "Pozycja na ekranie=(%d, %d)", point.x, point.y, P.x, P.y); SetWindowText(s); CDialog::OnLButtonUp(nFlags, point); } PO9-10 / 29

11 Tworzenie projektu PO9-11 / 29

12 WorkSpace PO9-12 / 29

13 Tworzenie programu PO9-13 / 29

14 Kompilacja i uruchomienie PO9-14 / 29

15 Program PO9-15 / 29

16 AppWizard 1.Tworzenie projektu MFC AppWizard 2.Programowanie interfejsu 3.Kontrolki i ich klasy 4.Komunikaty generowane przez kontrolki PO9-16 / 29

17 Projekt MFC AppWizard Interfejs oraz szkielet programu generowany przez AppWizard Funkcje obsługi zdarzeń Zasoby programu Użytkownik Dialog Based Single Document Multiple Documents MFC = Microsoft Foundation Class PO9-17 / 29

18 Tworzenie projektu PO9-18 / 29

19 Tworzenie projektu (2) PO9-19 / 29

20 Tworzenie projektu (3) PO9-20 / 29

21 Tworzenie projektu (4) PO9-21 / 29

22 Programowanie interfejsu PO9-22 / 29

23 Wybrane klasy MFC CWnd CObject CCmdTarget CButton COleControl CAnimateCtrl CEdit CComboBox CProgressCtrl CListBox CScrollBar CStatic CMonathCalCtrl CSliderCtrl CDateTimeCtrl CTabCtrl MFC = Microsoft Foundation Class PO9-23 / 29

24 Zestaw kontrolek PO9-24 / 29

25 Zestaw kontrolek Con... Aaab| ab  xyz  Wybór Statyczne pole tekstowe Grupa obiektów Pole wyboru Lista rozwijana Pasek przewijania poziomego Przewijanie pionowe listy Suwak Okno listy szczegółowej Karty Pole tekstu formatowanego Kalendarz Kontrolka użytkownika Pasek przewijania pionowego Wskaźnik postępu „Gorący” klawisz Drzewo Element animowany Próbnik daty i godziny Pole adresu IP Rozszerzone okno listy rozwijanej Pole listy Przełącznik opcji Przycisk Pole edycji Ilustracja PO9-25 / 29

26 Klasy kontrolek Con... Aaab| ab  xyz  CStatic CButton CComboBox CScrollBar CSpinPuttonCtrl CSliderCtrl CListCtrl CTabCtrl CRichEditCtrl CMonthCalCtrl COleControl CScrollBar CProgressCtrl CHotKeyCtrl CTreeCtrl CAnimateCtrl CDateTimeCtrl CIPAddressCtrl CComboBoxEx CListBox CButton CEdit PO9-26 / 29

27 Generowane komunikaty Con... Aaab| ab  xyz  BN_CLICKED, BN_DOUBLECLICKED EN_CHANGE, EN_KILLFOCUS, EN_SETFOCUS, EN_ERRSPACE, EN_HSCROLL, EN_VSCROLL, EN_MAXTEXT BN_CLICKED, BN_DOUBLECLICKED LBN_DBLCLICK, LBN_KILLFOCUS, LBN_SETFOCUS, LBN_SELCANCEL, LBN_ERRSPACE, LBN_SELCHANGE CBN_CLOSEUP, CBN_DROPDOWN, CBN_DBLCLK, CBN_EDITCHANGE, CBN_EDITUPDATE, CBN_ERRSPACE, CBN_KILLFOCUS, CBN_SETFOCUS, CBN_SELCHANGE, CBN_SELENDOK, CBN_SELNDCANCEL NM_OUTOFMEMORY, UDN_DELTAPOS NM_OUTOFMEMORY NM_OUTOFMEMORY, NM_CUSTODRAW, NM_RELEASEDCAPTURE IPN_FIELDCHANGED CBN_EDITCHANGE, CBN_CLOSEUP, CBN_DBLCLK, CBN_KILLFOCUS,... NM_CLICK, NM_DBLCLK, NM_KILLFOCUS, NM_RETURN,... NM_CLICK, TCN_SELCHANGE, NM_RCLICK, TCN_KEYDOWN... MCN_GETDAYSTATE, MCN_SELECT, MCN_SELCHANGE, MCN_RELEASECAPTURE,... NM_CLICK, NM_DBLCLK, NM_KILLFOCUS, NM_RCLICK,... DTN_CLOSEUP, DTN_DROPDOWN,... NM_KILLFOCUS, NM_RETURN,... NM_CLICK, NM_DBLCLK, NM_KILLFOCUS, NM_RETURN,... PO9-27 / 29

28 Kontekstowe menu kontrolki Cut Copy Past Insert ActiveX Control... Size to Content Align Left Edges Align Top Edges Check Mnemonics ClassWizard... Events... Properties PO9-28 / 29

29 Okno komunikatów Lista komunikatów kontrolki „Edit Box”, którym nie zdefiniowano funkcji obsługi Lista komunikatów kontrolki „Edit Box”, którym zdefiniowano funkcje obsługi Opis zdarzenia generującego podświetlony komunikat PO9-29 / 29


Pobierz ppt "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."

Podobne prezentacje


Reklamy Google