aplikacja dialogowa mfc krok po kroku
DESCRIPTION
How to write MFC Application responsible for doing math on 2 float numbers.Jak napisać aplikację dialogową w MFC by można było dodawać, odejmować, mnożyć czy dzielić liczby rzeczywiste wraz z zadaną precyzją wyniku.TRANSCRIPT
MFC Krok po krokuAplikacja dialogowa – budowa interfejsu użytkownika
Zadania laboratoryjne (czas realizacji: 1 tydzień) Celem ćwiczenia jest poznanie sposobu tworzenia aplikacji windowsowych MFC
oraz zasad umieszczania i programowania podstawowych kontrolek w oknie dialogowym.
Uruchomić program, który w zależności od wyboru: doda, odejmie, pomnoży lub podzieli dwie liczby. W tym celu należy wykonać poniższe kroki.
Tekst: Prof. Jerzy KisilewiczObrazki: Brian Bartkowiak, student
1. Wybrać z menu File|New|Projects.
a. Wybrać lokalizację, czyli katalog, w którym automatycznie powstanie podkatalog (przestrzeń robocza tworzonego programu -> ang location). W przestrzeni roboczej
będą umieszczone pliki tworzonego programu. b. Wpisać nazwę projektu (będzie to nazwa podkatalogu i równocześnie programu) ->
name. c. Z listy projektów wybrać: VisualC++|MFC|MFC Application. i nacisnąć „OK”.
2. Step1 – Nacisnąć „Next”.
Wybrać typ aplikacji „Dialog based” i nacisnąć klawisz „Finish”.
3. Skompilować i uruchomić wybraną aplikację. Wybrać z menu: Build|Build…, a następnie
po poprawnej kompilacji uruchomić program wybierając: Debug| Start Without Debugging ... .
Powieli się okno z nazwą programu – zakończyć program naciskając klawisz „OK.” lub „Cancel”.
4. Kliknąć napis “TODO: Place dialog controls here.” ( kontrolka „Static Textt”) Przesunąć okienko z tym tekstem do górnej krawędzi okna programu.
Kliknąć prawym klawiszem na ww. tekst i wybrać „Properties”.
W okienku właściwości w linii edycyjnej „Appearance|Caption” wpisać inny dowolny tekst. W zakładce „Align Textt” można
zmienić zmienić położenie tekstu.
5. Z okienka „Toolbox” przeciągnąć myszką ikony Aa (Static Textt) oraz ab|(EditBox) na wybrane miejsca obok siebie w okienku programu.
Jak w p. 4 wprowadzić do kontrolki „Static Textt” tekst z opisem pierwszej danej, która będzie wprowadzana do linii edycyjnej „Edit Box”. Powtórzyć
(dwa razy) czynności z p.5 dla drugiej danej i dla wyniku. Uruchomić program.
6. We właściwościach linii edycyjnej wyniku wybrać zakładkę „Behavior” i ustawić opcję „Read-only” na TRUE.
7. Zdefiniuj obsługę zdarzeń w pierwszej linii edycyjnej. Kliknij jej ikonę prawym klawiszem i wybierz „Add Event Handler…”.
W okienku „Message type:” podświetl EN_KILLFOCUS (zdarzenie wyjścia myszą z obszaru linii edycyjnej). Naciśnij klawisz „Add and Edit” i zaakceptuj nazwę funkcji. Pojawi się okno
do edycji kodu źródłowego w C++. (jeśli IDC_EDIT1 identyfikuje tę linię edycyjną – sprawdzisz to w jej właściwościach).
Wpisz następującą zawartość funkcji obsługi zdarzenia /../
8. Aby wrócić do edycji graficznej w lewym oknie (w zakładce „Res..”) rozwiń drzewo i gałąź „Dialog” oraz wybierz (dwuklik) okno dialogowe programu
(IDE_Nazwa_Projektu_DIALOG).
Powtórz to samo dla drugiej linii edycyjnej (z identyfikatorem IDC_EDIT2)
używając zmiennej b w miejsce zmiennej a.
Skompiluj program.
Błędy kompilacji wykazują brak definicji zmiennych: m_Text, a, prec, b.
9. Zdefiniuj ww. zmienne w klasie okna dialogowego. Kliknij prawym klawiszem nazwę klasy okna dialogowego w zakładce „Clas..” i wybierz „Add|
MemberVariable”.
Dodobnie dodaj zmienną prec typu int oraz zmienne a, b typu double.
10. Dodaj zmienną zabezpieczoną (Protected) m_Text typu CString do klasy dialogowej. W tym celu przejdź do zakładki Class View. Wykonaj dwuklik na klasę dialogową -
przejdziesz do edycji tej funkcji. Po instrukcji double b; dopisz inicjacje zmiennej CString m_Text;
11. Zmień system kodowania znaków. Przy otwartym projekcie wejdź w Project->Properties
Configuration Properties->General, znajdź pole Character Set i wybierzUse Multi-Byte Character Set.
12. Klikinij na klasę dialogowa. W poniżej ukażą się funkcje tej kasy. Wykonaj dwuklik na funkcji „OnInitDialog()”
– przejdziesz do edycji tej funkcji. Przed instrukcją return TRUE; dopisz inicjację zmiennej prec – dopisz instrukcję prec=3;.
Skompiluj i uruchom program. Spróbuj wpisywać dane.
13. W podobny sposób zainicjuj zmienne a i b oraz linie edycyjne wpisując do funkcji „OnInitDialog” instrukcje: /…/
14. Dodaj funkcję obsługi kliknięcia klawisza „OK.”. W edytorze graficznym kliknij ten klawisz prawym klawiszem myszki i wybierz „Add Event Handler…”.,
a następnie klawisz „Add and Edit” i zaakceptuj nazwę funkcji.
W edytorze tekstu źródłowego usuń instrukcję OnOK();
i na jej miejsce wpisz instrukcje: /…/
15. Przetestuj działanie programu.
16. Do okna programu (edycja graficzna) wstaw kontrolkę „Group Box” i zwiększ jej wymiary.
W obszar kontrolki wstaw jeden pod drugim 4 przyciski „Radio Button”.
Zaznacz te przyciski i kliknij prawym klawiszem myszki, a następnie wyrównaj położenie przycisków wybierając „Align Left Edges”.
17. Podobnie jak w p. 4 zaopatrz przyciski w teksty; „Dodaj”, „Odejmij”, „Pomnóż” i „Podziel”.
W oknie właściwości pierwszego przycisku („Dodaj”) zaznacz opcję„Group” -> TRUE
Dla tego przycisku stwórz zmienną m_zadanie typu int – klikając go prawym klawiszem i wybierając „Add Variable…”.
W „Add Member Variable Wizard” zmień „Category” na „Value”. Następnie ustaw „Variable Type ” na typ całkowity „int”. nadaj nazwę zmiennej w
okienku „Variable Name” i naciśnij „OK”.
18. W konstruktorze klasy okna dialogowego sprawdź wartość początkową zmiennej m_zadanie. Jeżeli wartość będzie różna od 0, zmień ją na „0”.
Następnie sprawdź działanie programu.
19. Zmodyfikuj działanie funkcji obsługi naciśnięcia klawisza OK. tak, aby wynik zależał od wartości zmiennej m_zadanie (po wykonaniu funkcji UpdateData(), aktualizowane są wartości zmiennych stowarzyszonych z przyciskami i zmienna m_zadanie otrzymuje
wartości: 0 – dodawanie, 1 – odejmowanie, 2 – mnożenie i 3 – dzielenie).
20. Umieść w oknie dialogowym tekst statyczny i linię edycyjną do wprowadzenia wymaganej liczby cyfr ułamkowych – precyzji.
Napisz funkcję obsługi tej kontrolki „Edit Control”, aby wprowadzoną liczbę całkowitą podstawiać do zmiennej prec zdefiniowanej w klasie okna
dialogowego.
21*. Działający program! (przypisek: Brian Bartkowiak)