• Nie Znaleziono Wyników

Programowanie w Windows

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie w Windows"

Copied!
35
0
0

Pełen tekst

(1)

Wykład 1

Programowanie w Windows

1. Programowanie zdarzeniowe 2. AppWizard

3. Aplikacja dialogowa (Dialog based)

(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.

PO01-2 / 40

(3)

Program proceduralny

Zdefiniuj początkowe obiekty i zainicjuj je Start

Czekaj na zdarzenie (np. na wprowadzenie danych) Przykład

Przetwarzaj dane

Czekaj na zdarzenie (np. na zapisanie wyników) Zamknij aplikację

(4)

Program zdarzeniowy

Zdefiniuj początkowe obiekty i zainicjuj je Start

Czekaj na zdarzenie

Czy zamknąć aplikację?

Nie Tak

Wykonaj funkcję

obsługi zdarzenia Wykonaj funkcję obsługi zdarzenia i zamknij aplikację

Stop

PO01-4 / 40

(5)

Obsługa zdarzenia

Przekaż obsługę zdarzenia do aplikacji

Czy aplikacja obsłuży je?

Nie Tak

Wykonaj funkcję obsługi zdarzenia Przekaż obsługę zdarzenia

do Windowsa

(6)

AppWizard

1. Tworzenie projektu MFC AppWizard 2. Programowanie interfejsu

3. Kontrolki i ich klasy

4. Komunikaty generowane przez kontrolki

PO01-11 / 40

(7)

Projekt MFC AppWizard

Interfejs oraz szkielet

programu generowany

przez AppWizard

Funkcje obsługi zdarzeń

Zasoby programu Użytkownik

Dialog Based Single Document

(8)

Tworzenie projektu

PO01-13 / 40

(9)

Tworzenie projektu (2)

(10)

Tworzenie projektu (3)

PO01-15 / 40

(11)

Tworzenie projektu (4)

(12)

Programowanie interfejsu

PO01-17 / 40

(13)

Wybrane klasy MFC

CWnd CObject CCmdTarget

CButton

COleControl CAnimateCtrl

CEdit

CComboBox CProgressCtrl

CListBox CScrollBar

CStatic

CMonathCalCtrl

CSliderCtrl

CDateTimeCtrl CTabCtrl

MFC = Microsoft Foundation Class

(14)

Zestaw kontrolek

PO01-19 / 40

(15)

Zestaw kontrolek

Con...

Aa 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

Pasek przewijania pionowego Wskaźnik postępu

„Gorący” klawisz Drzewo

Element animowany Próbnik daty i godziny Pole listy

Przełącznik opcji Przycisk

Pole edycji Ilustracja

(16)

Klasy kontrolek

Con...

Aa ab|

ab

xyz

CStatic CButton CComboBox CScrollBar CSpinPuttonCtrl CSliderCtrl CListCtrl CTabCtrl CRichEditCtrl CMonthCalCtrl COleControl

CScrollBar CProgressCtrl CHotKeyCtrl CTreeCtrl CAnimateCtrl CDateTimeCtrl CIPAddressCtrl CComboBoxEx CListBox

CButton CButton CEdit

PO01-21 / 40

(17)

Generowane komunikaty

Con...

Aa ab|

xyz

BN_CLICKED, BN_DOUBLECLICKED EN_CHANGE, EN_KILLFOCUS, EN_SETFOCUS, EN_ERRSPACE, EN_HSCROLL, EN_VSCROLL, EN_MAXTEXT

BN_CLICKED, BN_DOUBLECLICKED 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_OUTOFMEMORY

NM_OUTOFMEMORY, NM_CUSTODRAW, NM_RELEASEDCAPTURE NM_CLICK, NM_DBLCLK,

NM_KILLFOCUS, NM_RETURN, . . . NM_CLICK, TCN_SELCHANGE, NM_RCLICK, TCN_KEYDOWN . . .

NM_CLICK, NM_DBLCLK, DTN_CLOSEUP, DTN_DROPDOWN, ...

NM_KILLFOCUS, NM_RETURN, . . . NM_CLICK, NM_DBLCLK,

NM_KILLFOCUS, NM_RETURN, . . .

(18)

Kontekstowe menu kontrolki

CutCopy

PastInsert ActiveX Control...

Size to Content Align Left Edges Align Top Edges Check Mnemonics ClassWizard...

Events...

Properties

PO01-23 / 40

(19)

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

(20)

Aplikacja dialogowa

1. Propozycja aplikacji

2. Projektowanie interfejsu 3. Pokazanie okna „About”

4. Zmienne dla kontrolek 5. Obsługa przycisków

PO01-25 / 40

(21)

Propozycja aplikacji

(22)

Projekt interfejsu

PO01-27 / 40

(23)

Okna właściwości

(24)

Interface

PO01-29 / 40

(25)

Obsługa przycisku „About”

1. Wybierając „Events...” w kontekstowym menu przycisku

„About” otwieramy okno dodawania nowych handlerów.

2. Do obiektu IDC_BUTTON4 dodajemy funkcję obsługi komunikatu BN_CLICKED.

3. Akceptujemy nazwę funkcji „OnButtom4”.

4. Edytujemy funkcję wpisując do niej kod w języku C++.

(26)

Programowanie obsługi „About”

PO01-31 / 40

(27)

Działanie programu

(28)

Zmienne kontrolek

Con...

Aa ab|

ab

xyz

CStatic BOOL CString int CSpinPuttonCtrl int CListCtrl CTabCtrl Ctime, COleDateTime

int

CProgressCtrl CHotKeyCtrl CTreeCtrl CAnimateCtrl

Ctime, COleDateTime CIPAddressCtrl

Cstring, int CString int

CButton

CString, int, UINT, long, DWORD, float,double, BYTE short, BOOL, COleDateTime, COleCirrency

CString, int, UINT, long, DWORD, float,double, BYTE short, BOOL, COleDateTime, COleCirrency

PO01-33 / 40

(29)

MFC ClassWizard

CutCopy

PastInsert ActiveX Control...

Size to Content Align Left Edges Align Top Edges Check Mnemonics ClassWizard...

Events...

(30)

Obsługa zdarzeń

1. Przenieś dane z kontrolek do ich zmiennych.

2. Wykonaj zadane działania (Wynik=X+Y, Wynik=X/Y lub X=Wynik)

3. Przenieś dane ze zmiennych do ich kontrolek.

Obsługa przycisków „Dodaj”, „Podziel” i „Wynik -> X”

jest bardzo podobna. Do klasy okna dialogowego

„CWyklad12Dlg” dodamy funkcję „Oblicz(int)” realizującą algorytm:

PO01-35 / 40

(31)

Dopisanie funkcji

Go to Definition Go to Dialog Editor Add Member Function...

Add Member Variable...

Add Virtual Function...

Add Windows Message Handler...

(32)

Obsługa przycisków

CutCopy

PastInsert ActiveX Control...

Size to Content Align Left Edges Align Top Edges Check Mnemonics ClassWizard...

Events...

Properties

PO01-37 / 40

(33)

Obsługa przycisków

(34)

Program

PO01-39 / 40

(35)

Dezaktywacja klawisza

Cytaty

Powiązane dokumenty

The local properties of 1-planar graphs were studied in [4] where, among other results, the following analogy of Kotzig theorem, was proved: each 3-connected 1-planar graph contains

It can be concluded that the lowest perpendicularity tolerance (the highest cutting quality) was obtained for laser beam cutting and HD plasma cutting, whereas

Glass shift without mean (top right) shows no random error but spherical deformation.. This indicates that the 3 σ standard deviation contribution of the glass is in

We focus on a contact between a Rashba- type spin-orbit coupled region with a normal two-dimensional electron gas and show that the spin Hall currents, though vanishing in the bulk

Two-dimensional direct numerical simulations of infinitely thin trailing edges were con- ducted at M = 0.4 and M = 0.6. On the surface, either no-slip or slip wall conditions

Voor de morfologische ontwikkeling in de Oosterschelde is een zodanig verloop gekozen dat voor korte termijn (de eerste 5 jaar) de processnelheid gemiddeld 95% van de

zw iększają znacznie rolę procesow ą pokrzyw dzonego,

The agreement with the edge position for the pure compound [4, 5] and the changes in the S K edge [7] suggest that the properties of CuCr 2-x Sb x S 4 are mainly influenced by