01 Projektowanie i tworzenie programów


Część I
Tworzenie aplikacji Visual C++

Rozdział l
Projektowanie i tworzenie programu w Visual C++
Generowanie aplikacji dla Windows przy użyciu AppWizard
Modyfikowanie wyglądu aplikacji przy wykorzystaniu edytora pli-ków źródłowych___________________________
Dodawanie kodu w celu zmiany reakcji aplikacji
Ci, którzy nigdy nie próbowali napisać aplikacji dla Windows sądzą, że jest to bardzo ciężkie i żmudne zadanie. Jednakże odpowiednie narzędzia sprawiają, iż zadanie takie staje się łatwiejsze, a najlepszym tego rodzaju narzędziem jest Visual C++ 6. Używając go, możemy stworzyć działającą aplikację dla Windows w mniej niż minutę, zacząć jednak powinniśmy od nieco wolniejszego tempa.
Inne określenia Visual Studio
Developer Studio jest nazywane również Visual Studio. Oprócz tego można się spotkać również z terminem IDĘ (Integrated Development Enviroment).
Uruchomienie Visual C++
Aby uruchomić Visual C++, musimy z menu Start na pasku zadań wybrać Microsoft Visual C++ 6.0. Gdy program zostanie uruchomiony, na ekranie ukaże się okno Microsoft Visual Studio.
Uruchomienie Visual C++ wywołuje zatem pojawienie się okna Visual Studio. Visual Studio jest nazwą nadaną interfejsowi użytkownika w Visual C++, a pokazano go na rysunku 1.1. Visual Studio jest właściwym obszarem roboczym. Gdy widok okna w naszym monitorze nie będzie identyczny z zaprezentowanym, nie należy się tym przejmować.

20 Poznaj Visual C++ 6
Czytając niniejszą książkę nauczymy się jak wywoływać i korzystać z koniecznych funkcji programu.

Rysunek 1.1. Okno Visual Studio
Tworzenie nowego projektu
Aby rozpocząć pisanie nowej aplikacji, musimy najpierw utworzyć projekt. Jest on przeznaczony do zarządzania wszystkimi elementami składającymi się na program Visual C++ oraz gotową aplikację Windows. W celu utworzenia nowego projektu wybieramy pozycję New z menu File. Ukazujące się w tym momencie okno dialogowe pokazane jest na rysunku 1.2.
Filei PrciecL-

Wo!kspac"s J Othe; Docirnerds, I

^ojset aame;

^BWWff




3 CIu^łei Re;iJUice T^ Wi;aid ^]Cu-,[omAppWeaid ifIDatabaseProject :: 8iDevSludBAdd-inWi;ard 1: S; Eitended Stmed Proc Wzad 811SAF1 EHlendonWeafd ^Makelh 8SMFCAclivB>:C(mln]f*fctld [gMFCAppWBardlljl) gJMFCAppWiardlene) jS:NfwDalaba"Wizaid nu""Pio|ect <)Wrl32Aililfcatk"l 3Wn32CmsoleAp(fcation 3wn32 D>tiarr";4.inkLtmi" ^^M-ii^jllBtiSal^r 1' -11- - :-' : :":la

.ctsaEion;. : .:


CAProgfam Files'^ic>osoH Vsue J ^ Create new workspace
r .' .i',:,.,, . . ; . r i:...:-.-.. .


l d
Wonni:


,-'l'v.'ró2





i:"^:i::::':::::i^|^:^^;fc".

^s^^aii



| Cancd |

Rysunek 1.2. Okno dialogowe New

Projektowanie i tworzenie programu w Visual C++ 21
Wybór rodzaju projektu
Na początku należy określić rodzaj projektu, który chcemy utworzyć. W tym celu trzeba kliknąć kartę Projects w oknie dialogowym New, o ile nie jest aktualnie wybrana, a na wyświetlonej liście zaznaczyć typ projektu, który będzie tworzony. W przykładzie służącym w niniejszym rozdziale będzie to MFC AppWizard (exe). Wybór tej opcji oznacza, że owocem naszych działań będzie typowy, wykonywalny program dla Windows.
Do czego służy MFC?
Visual Studio zostało wyposażone w bibliotekę Microsoft Foundation Ciass. Jest to zestaw predefiniowanych klas języka C++. AppWizard tworzy szkielet projektu, używając klas wyprowadzonych z klas MFC. Używanie biblioteki MFC jest zilustrowane właśnie w niniejszej książce.
Nadawanie nazwy projektowi i wybór lokalizacji
Pole Locatiori służy do ustalenia katalogu dyskowego, w którym umieszczony zostanie projekt. Lokalizacja może pozostać w tym przykładzie niezmieniona.
Lokalizacja bieżąca, wyświetlana w polu Location, zależy od naszego wyboru poczynionego podczas instalacji Visual C++. Aby ją zmienić, musimy wpisać nową bezpośrednio w polu lub kliknąć klawisz znajdujący się obok pola. Pozwoli to nam na przejrzenie drzewa katalogów na dysku i wybór jednego z nich. Nazwa katalogu, w którym zostanie umieszczony projekt, wynika z nazwy samego projektu, na przykład: C:\Program Fi-les\Microsoft Visual Studio\My Projects\Minute.
Nadawanie nazw projektom
Swoim projektom można nadawać nazwy odmienne od sugerowanych tutaj. Aby jednak uniknąć nieporozumień, wskazane jest używanie tych samych nazw, jakie występują w omawianych przykładach. W aplikacjach należy używać takich nazw, które określają czynności wykonywane przez daną aplikację. Obecnej aplikacji nadany został tytuł Minutę, gdyż jak już wspomnieliśmy wcześniej, nową aplikację można utworzyć w czasie krótszym niż minuta.
Używanie AppWizard
Po dokonaniu wszystkich ustawień w oknie dialogowym New klikamy OK, by rozpocząć tworzenie nowego projektu. AppWizard rozpocznie ten proces za użytkownika. Zadaniem tego kreatora jest utworzenie kośćca programu, który następnie będziemy rozbu-

22 Poznaj Visual C++ 6
dowywać o kolejne elementy. Tworzenie szkieletu projektu odbywa się poprzez wybór odpowiedniej klasy spośród Microsoft Foundation Ciass, dla utworzenia wszystkich plików koniecznych w projekcie Visual Studio.
PATRZ TAKŻE
" Więcej szczegółów dotyczących tworzenia aplikacji opartych o okna dialogowe znajduje w rozdziale 3
Korzystanie z podstawowych opcji AppWizard
Okno dialogowe AppWizard (pokazane na rysunku 1.3) pozwala nam wybrać interfejs aplikacji spośród trzech dostępnych. W projekcie Minutę interfejsem będzie okno dialogowe. Należy więc wybrać opcję Dialog Based. Możliwy jest także wybór z rozwijanej listy języka, który zostanie użyty w plikach źródłowych. W niniejszym przykładzie możemy posłużyć się bieżącym wyborem.
Wszystkie informacje, których AppWizard wymaga i które wykorzysta w tworzeniu nowego projektu, są w tym punkcie już ustalone. Należy więc kliknąć Finish, po czym pojawi się nowe okno - The New Project Information, jak na rysunku 1.4.
MFC AppWizald Sień 1
Whdl type ot appficafion wouldyou like to cieate?
f Stf^gle document f Mufcpte docuftients 17 fil*^"1!
f? ;.""".:;1,,/,:.-..-1 -- -
What ianguage wouid you iike youi reiources in? [Engirch [Uniled Siałeś] [APPAZENU.DLL^
< Ba* l Ma* >
Rysunek 1.3. AppWizard MFC - krok l, ustalający typ nowego projektu
Okno to zostaje wyświetlone przez AppWizard w celu zatwierdzenia szczegółów dotyczących tworzonego projektu. Wewnątrz tego okna ujawnione są nazwy klas użytych w projekcie oraz nazwy plików, które zostaną utworzone. Z listy tej możemy się dowiedzieć również o innych składnikach funkcyjnych, jakie kreator włączy do projektu. Aby zamknąć okno The New Project Information, klikamy OK.

Projektowanie i tworzenie programu w Visual C++ 23
New Pioleci Inionoation
AppWizard wH create a new $kefeton ploject w^h the following specificalions:
Applicattón t^pe c^ Minutę:
D iatog-B ased Appfcahon targetng:
Win32
Ciasses to be cteated;
Applicafion: CMinuteApp in Minutę h and Minule.cpp Dialog: CMhuteOlg in MinuteOlg h and MinuteDig.cpp
^edtules:
+ About bon on sysleiri menu " 3D Controls
* Uses shared DLL impletnenitlion (MFC42.DLL) + Acriya^ Conffols supporó enabied + LocaS^abfe text in' Engis-hlUnitedS(a)es)
ProlectDiFectofy:
C;\P]i)gia[n FlesSMiaosof t Visual Sludni'\M>Pro|ecl8\Minute
Rysunek 1.4. Okno dialogowe The New Project Information
Na tym etapie zadanie AppWizard jest zakończone, a nowy projekt o nazwie Minutę zostaje utworzony i otwarty w oknie Visual Studio. Jeśli nawet nie widzieliśmy dotąd ani jednej linii kodu źródłowego C++, możemy być pewni, że w pełni funkcjonująca aplikacja dla Windows jest już gotowa.
Panel po lewej stronie okna Visual Studio zwany jest panelem roboczym. Jeśli projekt został już utworzony, panel ów zawiera trzy karty: ClassView, ResoureeView oraz Fi-leView. Karty te umożliwiają nam dostęp do każdej części składowej projektu. Możemy zmieniać rozmiar tego panela, jak też wszystkich innych okien, które pojawiają się w Visual Studio, poprzez uchwycenie jego krawędzi i przesunięcie w żądane miejsce, z wciśniętym lewym klawiszem myszy.
Ponowne uruchamianie AppWizard
AppWizard używany jest tylko do tworzenia nowego projektu. Nie można powrócić do niego, gdy projekt został już utworzony. Jeśli programista zorientuje się, że ustalenia dokonane przez niego są niewłaściwe, chcąc powrócić do AppWizard musi uprzednio usunąć istniejący projekt. Aby tego dokonać, wystarczy usunąć z dysku katalog, w którym umieszczony został dany projekt. Dla przykładu, aby ponownie opracować projekt Minutę, należałoby używając Eksploratora Windows usunąć katalog C:\Program Files\ Microsoft Visual Studio\My Projects\Minute.

24 Poznaj Visual C++ 6 i1
Generowanie i uruchamianie aplikacji
Teraz przeprowadzimy proces generowania wykonywalnego pliku, na podbudowie utworzonego projektu. W przykładzie Minutę plik ten będzie nosił nazwę Minute.exe. Gdy plik zostanie wygenerowany, będziemy mogli uruchomić go wewnątrz Visual Studio.
Wykonywalne pliki C++ są standardowymi plikami .exe systemu Windows
Minute.exe jest plikiem wykonywalnym w systemie Windows, podobnie jak inne pliki .exe. Dlatego można go uruchomić z Eksploratora, a nawet utworzyć skrót z pulpitu.
Wybór konfiguracji procesu generowania pliku
Visual Studio może tworzyć pliki wykonywalne .exe w dwóch trybach: debug version oraz release version. Ustalenie tego trybu nazywane jest konfiguracją generatora. W tym przypadku wykorzystamy tryb debug version. Używany on będzie we wszystkich przykładach do czasu, gdy napotkamy instrukcje nakazujące jego zmianę. W przykładzie Minutę nie należy zmieniać tej konfiguracji. Wynikiem tego będzie zawarcie informacji debugera wewnątrz właściwego pliku aplikacji Minutę. Owe informacje umożliwiają prześledzenie kodu podczas wykonywania i sprawdzenie zawartości kolejnych zmiennych. Jednak włączanie tych informacji do pliku wykonywalnego zwiększa jego rozmiary, a także powoduje obniżenie szybkości działania. Konfiguracja release nie umieszcza takich informacji, a stosuje się ją, gdy generowany plik jest ostateczny i ma trafić do końcowego odbiorcy.
PATRZ TAKŻE
By dowiedzieć się więcej o debugowaniu projektów, przejdź do rozdziału 27.
Przeprowadzanie procesów kompilacji i łączenia
Proces generowania pliku wykonywalnego obejmuje kompilację pojedynczych plików utworzonych w ramach projektu, a następnie łączenie ich, czyli łączenie kodów wynikowych w jeden plik wykonywalny. By przeprowadzić ten proces, musimy kliknąć przycisk Build w pasku narzędziowym albo z menu Build wybrać pozycję Build Minute.exe lub też użyć skrótu klawiaturowego (F7).
Plik Minute.exe umieszczony jest w podkatalogu /Debug, w katalogu przechowującym cały projekt, czyli /Minutę. Podkatalog /Debug zawiera również pliki obiektowe. Utworzony podkatalog został opatrzony taką nazwą /Debug, ponieważ właśnie taką konfiguracją posłużyliśmy się dla operacji wygenerowania pliku. Gdyby wybrana została konfiguracja release, pliki te znalazłyby się w podkatalogu /Release. Karta Build w panelu Output wyświetla szczegóły dotyczące procesu generowania pliku. Jeśli kod źródłowy zawierałby błędy, zostałyby one wykazane w tym panelu, który można zobaczyć na ry-

Projektowanie i tworzenie programu w Visual C++ 25
sunku 1.5. Ponieważ jednak w mniejszym przykładzie kod źródłowy był przygotowywany przez AppWizard, powinien być wolny od błędów.

i^BBSBfilffilSJI^^ Rysunek 1.5. Proces generowania pliku wykonywalnego w projekcie Minutę


Uruchomienie aplikacji
Aby uruchomić aplikację, należy kliknąć przycisk Execute znajdujący się na pasku narzędziowym. Można również z menu Build wybrać pozycję Execute Minute.exe lub też użyć skrótu Ctrl+F5. Główne okno aplikacji zostanie wyświetlone, jak na rysunku 1.6.
& Minutę
"OK"""""
Cancel
TODO; Place dialog contols here
Rysunek 1.6. Uruchomiona aplikacja Minutę
Zgodność z interfejsem Windows
Gratulacje! Utworzyliśmy właśnie aplikację dla Windows przy użyciu C++. Jak można się przekonać, zawiera ona standardowe składniki funkcyjne, używane we wszystkich

26______________________________________ Poznaj Visual C++6
aplikacjach dla systemu Windows. Aplikacja Minutę posiada dwa przyciski, OK oraz Cancel, a także wyświetla określony tekst. Wyposażona jest również w pasek tytułowy, wyświetlający przypisaną aplikacji ikonę oraz przycisk zamykający. Pasek tytułowy zawiera menu systemowe i można za jego pomocą (klikając na nim i przytrzymując lewy klawisz myszy) przesuwać całe okno.
Gdy klikniemy ikonę w lewym górnym rogu okna Minutę, pojawi się menu systemowe, z którego wybierzmy pozycję About Minutę. Aplikacja wyświetli kolejne okno dialogowe, zawierające podstawowe informacje o aplikacji. Obrazuje to rysunek 1.7.
Kliknięcie OK w oknie dialogowym About Minutę spowoduje jego zamknięcie. Kuknięcie OK tym razem w oknie głównym aplikacji Minutę sprawi, iż zostanie zamknięta cała aplikacja.
About Minutę
MinuteVerrion1.0 [[J3K"
ir*Jui i "i;'"";'i
,^|!3 Copr[ight(C)1998
Rysunek 1.7. Okno dialogowe About Minutę
Modyfikacja interfejsu aplikacji
Wizualne elementy projektu zwane są zasobami (ang. resources). Okna dialogowe, ikony, menu są właśnie takimi zasobami. Zawarty w Visual Studio edytor zasobów jest narzędziem pozwalającym nam projektować elementy zaliczające się do różnych rodzajów zasobów, a także modyfikować wygląd aplikacji.
Umieszczanie przycisków sterujących
Zanim dodamy nowy przycisk sterujący, najpierw musimy otworzyć szablon głównego okna dialogowego aplikacji.
Otwieranie szablonu
1. Wybierz kartę ResourceView w panelu roboczym projektu, a ujrzysz zwiniętą listę zasobów pod nazwą Minutę resources.
2. Rozwiń tę listę, klikając znak + po lewej stronie napisu Minutę resources, a następnie rozwiń katalog Dialog. Widoczne są tutaj dwa identyfikatory: IDD_ABOUTBOX oraz IDD_MINUTE_DIALOG, jak na rysunku 1.8.

Projektowanie i tworzenie programu w Visual C++ 27

Rysunek 1.8. Identyfikatory w katalogu Dialog, w panelu ResourceYiew
3. Kliknij dwukrotnie identyfikator IDD_MINUTE_DIALOG, po czym powinien zostać wyświetlony szablon głównego okna dialogowego aplikacji Minutę. Jest to pokazane na rysunku 1.9. Okno po uruchomieniu aplikacji będzie wyglądało tak jak teraz wygląda jego szablon. Możesz teraz modyfikować szablon, używając edytora zasobów.
Teraz dodamy nowy przycisk sterujący.
^Efa LA JfBW l>ag.t &t,ed fiAf i.aw- lód!
^ cf as -r" ::a- -- ,[o

^nito" Uałp

la
,!i'-ta1'' ! ;M 1"


[S] % ^|COMBOBU^LX1TEM ^J ^


: i:Mr"B:l
':,";;;^^^a;.S-:."". -""J.d

l "*''
l

J|,CM,nu"eDlg d 3.-'




i j ,, i.,,, i.,,..,,,. i,,., i,,,, i,.,, i.,,,:


: - ! --aO-hg
: : aiDDflBGUTBO:-;


' ^II^W^^^I^^II^^^-^IlllIlsI
;,.:'- ",-.".,. ,^^
[Awal j
i Taoo^Pbc"dt*aŁ.yiit*i"BB.

' 11

, 100 MINUTĘ 11KLI1B1




'." Ulcon
:1 s. astmiilt
; ? QV"m"l i; !0".V",|:BB~W-*.l a F-*'".








l





l^^^llll-^^^llllll'^

Rysunek l .9. Otwarty szablon głównego okna dialogowego
Dodawanie nowego przycisku do szablonu
l. Zanim dodasz do szablonu nowy przycisk, usuń napis widniejący pośrodku. Kliknij w tym celu widoczny tekst TODO: place dialog controls here; wokół napisu

28 Poznaj Visual C++6
pojawi się ramka formatująca (rysunek 1.10). Następnie naciśnij klawisz Delete na klawiaturze, a napis zostanie usunięty z szablonu.
i^0e E* ^e" irani Bwc< Buki Łdłwł looi! Lindów Bsto ^.^"^^Ijl^^y^:^ : _jJ] xl :d a/aa *t|i'1 2- ;. iOlB-gll^lCOMBllBIKCinEM""^""^! "
"'"'i31 "(tm)"in.Di,'--'^"'33.-11,'.B:" ! a-

5 ^ M(tm)]. ."(tm).c" ^ .JDaton
8: 1[>D ABOUTBOX : ! iDb MINUTĘ Dgml
3: LJ lewi
t _|S>r,|Tltlt
tTeBS: Plawffateg Mrtirii hae.
T1'"11;:1 /ll"l:l:t"' '\
Caned l


'':'jClailVawj ^{Beloucey.Tł [g Fleyuy
l: s :1:.1: "'.; '.i ' | B) mi" ;'i;
Readv
Rysunek 1.10. Usuwanie tekstu z okna dialogowego 2. Wybierz z paska narzędziowego Controls ikonę przycisku, jak na rysunku 1.11.

Rysunek 1.11. Wybieranie ikony przycisku z paska narzędziowego
3. Przenieś wskaźnik myszy nad obszar szablonu. Gdy już to uczynisz, wskaźnik przyjmie postać krzyżyka wskazującego miejsce umieszczenia nowego przycisku. Ustal jego pozycję w pewnej odległości od OK i Cancel i kliknij myszą. Nowy przycisk, opatrzony napisem Buttoni, pojawi się na szablonie; widać to na rysunku 1.12.

Projektowanie i tworzenie programu w Visual C++ 29
^Ete iS ^w Irewt &c"=d BAl 1.<"1 loołi a"k" Li*
1,'a, t* H a * na. -f .
~33..':|i<- a f. i "i

- -.J Mnute lafOlMCDf
- _aK^
SalDDABGUTBCK
lisa


'' j Cl.lir/gw j f-j ReiuuraVie" | j] F^/BW
s 11 : '.as i lr
RRysunek 1.12. Dodawanie nowego przycisku do okna dialogowego
4. Aby zmienić napis widniejący na przycisku, upewnij się, że jest on oznaczony ramką formatującą, jak na rysunku 1.11. Jeśli przycisk nie jest zaznaczony, po prostu kuknij go. Napisz: Press Me. Otworzy się nowe okno dialogowe Push Button Properties, jak widać na rysunku 1.13. Jeśli nie nastąpi to automatycznie, kliknij dodany przycisk prawym klawiszem myszy, a później wybierz pozycję Properties z otwartego menu skrótów

Rysunek 1.13. Zmiana nazwy i ID nowego przycisku
5. W polu rozwijalnej listy ID wpisz IDC_PRESS_ME, zastępując aktualny wpis IDC_
BUTTON1.
6. Upewnij się, że okno dialogowe Push Button Properties wygląda na twoim ekranie tak samo, jak na rysunku 1.13.

30 Poznaj Visual C++6
7. Zamknij okno dialogowe Push Button Properties. Na przycisku dodanym do szablonu IDD_MINUTE_DIALOG powinien pojawić się napis Prę s s Me.
PATRZ TAKŻE
Więcej informacji na temat projektowania okien dialogowych znajdziesz w rozdziale 3. i Objaśnienia dotyczące dodawania funkcji obsługowych są w rozdziale 4.
Dołączanie kodu
Gdy przycisk jest już umieszczony we właściwym miejscu, należy przypisać mu określoną reakcję na jego przyciśnięcie. Aby to osiągnąć, musimy dopisać pewną porcję kodu, ale bez obaw - to tylko jedna linia.
Przypisywanie kodu do przycisku
1. Otwórz w edytorze zasobów szablon okna dialogowego. W tym celu powtórz procedurę opisaną w punkcie "Dodawanie nowego przycisku do szablonu".
2. Kliknij prawym klawiszem myszy przycisk Press Me, a następnie z menu skrótów wybierz pozycję Eyents. Otwarte zostanie okno dialogowe New Windows Message and Event Handlers dla klasy okna dialogowego, jak na rysunku 1.14. Gdy podczas pracy aplikacji Minutę naciśnięty zostanie przycisk Press Me, system Windows powinien wysłać odpowiedni komunikat do okna dialogowego tejże aplikacji. Użyj okna New Windows Message and Event Handlers, by dodać funkcję stwierdzającą fakt naciśnięcia przycisku i wywołującą określony kod obsługujący takie zdarzenie.
N CK Windowi Meltaoe and Even> Handlers lor ciass l.MinutrDlg
OK Cancef j | fidd Handler | Ądd and Edit |
0ais es obfeci to handle:
IDCANCEL IDOK
~3
BN_CUCKEO: Indicateł Ihl uss cfcked a bulion
Rysunek 1.14. Dodawanie kodu do zdarzenia naciśnięcia przycisku
3. Z listy New Windows messages/events wybierz pozycję BN_CLICKED. Zauważ, że pierwsza pozycja na liście jest traktowana jako domyślna.

Projektowanie i tworzenie programu w Visual C++ 31
4. Kliknij Add and Edit. Otworzy to kolejne okno dialogowe Add Member Function,
widoczne na rysunku 1.15. W tym miejscu nadasz nazwę funkcji programu, która będzie wywoływana zawsze, gdy okno dialogowe aplikacji odbierze komunikat BN_CLICKED, świadczący o naciśnięciu przycisku Press Me.
5. Kliknij OK, aby zaakceptować bieżącą nazwę OnPressMe. Zapis nowej funkcji pojawi się w oknie edytora. Spójrz na rysunek 1.16. Funkcja ta została dodana jako składowa klasy CMinuteDlg, a klasa ta została automatycznie utworzona i nazwana, kiedy AppWizard tworzył szkielet projektu. W chwili obecnej funkcja nie ma jeszcze przydzielonych zadań, należy więc dopisać porcję kodu.

Rysunek 1.15. Nadawanie nazwy funkcji, która będzie obsługiwać zdarzenie
:':ff*BK-lWa-;.B"
K^fe.(tm)^l)i,^^te,(tm)i^.^-:^.Ł"^-^^:-/"^"':;^r^^^ l-j "
",", ..laiSEM^aiSl^jŁ,...^,,,,,,.,,.^,.,. """-d:,1"

|t"~""" ,,"^...,,,,......Ml'';1''','""!'"'!,,.,.......^].*0'''"""".,-.,...",..,..."", da- iises,''! ' -i -a

^^^^-;;^^^sailll^sii^

CDialog: .OnPaint.0. -7

s

' BO MINUTĘ OKU1GI

HCHR5ÓR a^eDIg^OrrólIeryDrłgIccmO i-tiir-i (HCORSOR) i>hlt:oii,-
roid CHinuteDig: :OitPrwstfa()

iti-OlMt
ItC.lStiiT.U. ; sit; DV";CT>
;a"a-,|^i"""K">-|.(j(<*A"i









Rysunek 1.16. Szkielet funkcji OnPressMe() 6. Dodaj wpis do funkcji OnPressMe () .identyczny z listingiem 1.1.

32______________________________________Poznaj Visual C++ 6
Listing 1.1. LST01_1.CPP-implementacja obsługi komunikatu o naciśnięciu przycisku
1 void CMinuteDlg::OnPressMe()
2 (
3 // TODO: Dodaj tu swój własny kod obsługi komunikatów sterowania
4 MessageBox("Thanks, I needed that!");
5 }______________________________________________________
Została tu użyta predefiniowana funkcja MessageBox () w celu wyświetlenia okna zawierającego komunikat Thanks, l needed That!, gdy zostanie naciśnięty przycisk Press Me.
Sprawdzenie zmian wprowadzonych do aplikacji
Za każdym razem, gdy zostają wprowadzone zmiany, należy ponownie przeprowadzić operację generowania i uruchomić aplikację, by zobaczyć, jaki rezultat przyniosły te zmiany. Musimy w takiej sytuacji kliknąć przycisk Build lub wybrać pozycję Build Mi-nute.exe z menu Build bądź też skorzystać z klawisza funkcyjnego F7. Spowoduje to wygenerowanie nowego pliku wykonywalnego, z uwzględnieniem zmian wprowadzonych w kodzie plików źródłowych lub zasobowych.
Jeśli w kodzie tkwi błąd, zostanie on zidentyfikowany podczas procesu kompilacji, i wykazany na karcie Build w panelu Output, u dołu okna Visual Studio. Ilustruje to rysunek 1.17. W sytuacji, gdy zostaną podane komunikaty o wystąpieniu błędów, należy dokładnie sprawdzić, czy kod wpisany do funkcji OnPressMe () jest identyczny z zapisem w listingu 1.1. Jeżeli kontrola wykaże błędność wpisu, musimy przepisać ten fragment kodu i ponownie kliknąć przycisk Build. Należy postępować w ten sposób do momentu, kiedy po wykonaniu kompilacji nie pojawią się już żadne komunikaty o błędach. Skoro kod źródłowy jest "czysty", należy kliknąć przycisk Execute Program albo wybrać pozycję Execute Minute.exe z menu Build lub użyć skrótu klawiaturowego Ctrl+F5. Powinno zostać wyświetlone okno dialogowe Minutę, jak na rysunku 1.18.
Jeśli teraz zostanie kliknięty przycisk Press Me, wywoła to pojawienie się okna wyświetlającego komunikat Thanks, l needed that!, widać to na rysunku 1.19. Po kliknię-ciu OK, okno zostanie zamknięte. Ponowne kliknięcie przycisku Press Me w oknie głównym spowoduje ponowne otwarcie okna ze znanym już komunikatem. Dzieje się tak dlatego, gdyż za każdym kuknięciem Press Me, program wywołuje działanie funkcji OnPressMe ().

Projektowanie i tworzenie programu w Visual C++
ltVi"ual c+* IMmuteDtg.cppl

--^ ".
!^ L"" L'" Yiew !nw( Plowct fimki loob ^BiAw y^p
l^lis^a' ns 1! ' 1- n s;?,' 1*1-



~3'<. ^iSS " ! 'l
CDialog::OnPaint(ł;

^J Minule letouce*
M ^a i)"*n
: SilDDABOyTBrK
)'MIHUTE DW.061
/ '.iiii- -Sl ! 'i lewi
1*1 asuhsritit
i-fftitm (HCUK'3Rł l"_hlcon;

cid CMinuteDlg: :OnPressMet)
MesaagBBQx('ThRnk". 1 needed that!')
infiguration: Minutę - łlin32 Ciffhug-
CoRpiling... MinuceDlg.cpp "linking. , .
l errortB). O HarniDg(s)
gg^^^/^^..j^Mrdjg.^ ^ ^, ^_
Rysunek 1.17. Błędy kodu wykazywane są na karcie Build
Zmiany zapisywane są automatycznie, w trakcie generowania pliku wykonywalnego
Visual Studio automatycznie zapisuje wszelkie zmiany w plikach, przed rozpoczęciem procesu budowania aplikacji. Nie musimy więc pamiętać o ich zapisywaniu.
Cancei
Pies; Me
Rysunek 1.18. Aplikacja Minutę po wprowadzeniu zmian interfejsu
Thanks, l needed thatl
l OK
Rysunek 1.19. Sprawdzenie prawidłowości reakcji i działania kodu

34______________________________________Poznaj Visual C++ 6
Zapisanie i zamknięcie projektu
Pracując w Visual Studio programista wielokrotnie przemieszcza się pomiędzy oknami edycyjnymi plików źródłowych i zasobów, a także robi sto innych rzeczy. Pożyteczną cechą tego programu jest fakt, że proces generowania aplikacji powoduje automatyczne zapisanie wszelkich wprowadzonych zmian w projekcie. Jednakże w każdym momencie możliwe jest zapisanie konkretnych plików poprzez użycie przycisku Save. Możemy również w wybranej chwili zapisać wszystkie pliki, które uległy modyfikacjom, naciskając przycisk Save Ali. Natomiast nie trzeba robić nic w celu zapisania całego projektu. Gdy praca nad nim jest zakończona, wystarczy po prostu go zamknąć. Aby zamknąć projekt, wybieramy pozycję Close Workspace z menu File lub też w tradycyjny sposób opuszczamy Visual Studio.
*-Identyfikator wprowadzenia zmian
Gdy nazwa pliku wypisana w pasku tytułowym Visual Studio opatrzona jest symbolem gwiazdki, oznacza to, że zaszły pewne zmiany w pliku, które nie zostały zapisane. Symbol ten pojawia się również obok katalogu Resources, na karcie ResourceYiew, gdy któryś z plików zasobowych zawiera nie zapisane modyfikacje.

iB^-s^r- tpih,;'; ^'^-'"'w/.inr; '..w>';'!t"ysi':'^ .c-J i .fwi^-^y,


Wyszukiwarka

Podobne podstrony:
01 Projektowanie programu w języku C
01 Część I Projektowanie i tworzenie bazy danych SQL
01 Wprowadzenie do programowania w jezyku C
01 Projektowanie relacyjnej bazy danych Czym jest relacyj
konsultant obslugi projektow finansowanych z programu kapital ludzki 07 15,86
01 PROJEKT BLUE BEAM
01 mój pierwszy program kod
01 Projekt Ujawnienie Michael Wolf 42
01 Intro Coding Programming
2004 01 Pisanie bezpiecznych programów [Programowanie]
Projekt Metodyka Programowania
Projektowanie i tworzenie baz danych

więcej podobnych podstron