Kurz IDE Visual C++ (2.)
V tΘto lekci najdete nßvod, jak vytvo°it konzolovou aplikaci
pro kurz C++ a standardnφ MFC AppWizard [exe] aplikaci pro
kurz DirectX.
2.1. Win32 Console Application
V prvnφm kurzu C++ se uΦφme zßklady C, tak₧e projekt, kter²
vytvß°φte musφ b²t co nejjednoduÜÜφ. V n∞jakΘm starΘm
v²vojovΘm prost°edφ by patrn∞ nebyl problΘm vytvo°it
takto jednoduch² projekt, proto₧e programovßnφ novΘho
programu zaΦφnalo v₧dy od naproste nuly! Kdy₧ jste
v menu vybrali polo₧ku New, prost°edφ vytvo°ilo
jeden prßzdn² soubor s p°φponou .c nebo .cpp a vÜe
ostatnφ z∙stalo na vßs. VC++ je mnohem chyt°ejÜφ
a programßtorovi napφÜe mnoho °ßdek samo.
To ale m∙₧e b²t zvlßÜt∞ v zaΦßtcφch krajn∞ ne₧ßdoucφ.
Proto VC++ umo₧≥uje vytvo°it tzv. konzolovou aplikaci, kterß
se jednoduchostφ velice p°ibli₧uje v²Üe uvedenΘmu programu.
Jak tedy vytvo°φme konzolovou aplikaci ve Visual C++?
V minulΘ lekci tohoto kurzu jsme se letmo pokusili
vytvo°it takov² projekt, ale pro ·plnost vÜe vysv∞tlφm od zaΦßtku.
- Vyberte z menu File polo₧ku New. Otev°e se vßm dialog podobn² tomuto:
- Ujist∞te se, ₧e mßte vybranou kartu Projects a polo₧ku Win32 Console Application.
- Do okΘnka Project Name napiÜte jmΘno novΘho projektu t°eba Pepa. V okΘnku
location nalistujte cestu k vaÜemu programu. To druhΘ je celkem d∙le₧itΘ, jinak
se vßm projekt vytvo°φ kdesi a vy ho pak nenajdete :-)
- Ostatnφ volby (pokud n∞jakΘ jsou) nechte jak jsou a klepn∞te na tlaΦφtko OK.
- Otev°e se vßm dalÜφ dialog tzv. Wizard (Φesky Pr∙vodce nebo ╚arod∞j). Wizard vßs provede
zbytkem vytvß°enφ vaÜφ novΘ aplikace. V konzolovΘm aplikaci je Wizard velice
prost², proto₧e obsahuje pouze jeden dialog se Φty°mi volbami.
Rozeberme si jednotlivΘ volby:
- An empty project
Vytvo°φ naprosto prßzdn² projekt, kter²
neobsahuje jedin² soubor, jedin² °ßdek k≤du. Do projektu m∙₧ete postupn∞
p°idßvat jak hlaviΦkovΘ tak i zdrojovΘ soubory.
- A simple application
Tato volba je pro nßs ta nejpodstatn∞jÜφ, proto₧e obsahuje jedin²
zdrojov² soubor prßv∞ s fukncφ main() , kterß nßs velice zajφmß.
- A "Hello, World!" application
Vytvo°φ praktick² stejn² projekt jako p°edchozφ volba, ale
p°idß navφc jeden °ßdek, kter² za°φdφ vypsßnφ textu "Hello, World!" na
obrazovku. Pozor! Zde je pou₧ita funkce printf() , nikoliv
cout !
Program vypφÜe text "Hello, World!", od°ßdkuje a skonΦφ.
- An application that supports MFC
Vytvo°φ projekt kter² podporuje knihovnu
MFC. Program prakticky d∞lß totΘ₧, co vÜechny p°edchozφ s tφm rozdφlem, ₧e m∙₧ete
vyu₧φvat vÜechny v²hody MFC a zdroje (Resources). Ti z vßs,
kte°φ neznajφ MFC, se s touto volbou v∙bec
nemusφ zab²vat, nßm toti₧ naprosto postaΦφ druh² projekt.
- Vyberte druhou volbu a stiskn∞te tlaΦφtko Finish. Po
stisku tohoto tlaΦitka se jeÜt∞ zobrazφ souhrn, ve kterΘm
p°ehledn∞ vidφte vÜechny d∙le₧itΘ volby. Potvr∩te stiskem OK.
V²slednß aplikace m∙₧e vyu₧φvat vÜechny funkce
normßlnφ oknovΘ aplikace, ale sama ₧ßdnΘ okno nemß. K testovßnφ tohoto programu je v²bornΘ
vyu₧φvat P°φkazovou °ßdku Windows (Command line).
Dßle se tedy budeme zab²vat pouze konzolovou aplikacφ typu A simple application, kterß jak u₧ jsem
psal, obsahuje pouze funkci main() , znßmou z C. Je to vstupnφ
a zarove≥ v²stupnφ bod celeho programu.
Je to prvnφ funkce, kterou Windows volajφ po spuÜt∞nφ programu a p°i ukonΦenφ
funkce main() cel²
program skonΦφ.
Poznßmka: Pokud pracujete s vφce vlßkny (thread), program se ukonΦφ a₧ po dokonΦenφ poslednφho
vlßkna. Ano i takto zdßnliv∞ primitivnφ aplikace m∙₧e vyu₧φvat vφce vlßken - multithreading.
Funkce je podrobn∞ popsßna v druhΘ lekci kurzu o C++, tak₧e jen krßtce. Funkce vracφ
hodnotu typu int , kterß je zßrove≥ v²stupnφ
hodnota hlavnφho vlßkna aplikace. Program
by m∞l vracet n∞co jinΘho ne₧ 0, pokud v pr∙b∞hu programu doÜlo k chyb∞. Vstupnφ parametry
jsou troÜiΦku slo₧it∞jÜφ. Jednß se o parametry p°φkazovΘ °ßdky. V prvnφm parametru je ulo₧ena
hodnota, kterß udßvß poΦet parametr∙ p°φkazovΘ °ßdky. Hodnota tohoto parametru je minimßln∞
1, proto₧e program bere jako parametr i jmΘno programu (pepa.exe ).
Druh² parametr je ukazatel na pole °et∞zc∙ obsahujφcφ jednotlivΘ parametry.
Jak se pracuje s t∞mito parametry je vid∞t v p°φkladu z kurzu C++.
2.2. MFC AppWizard (exe)
Tato druhß Φßst je pro Φtenß°e druhΘho kurzu o DirectX.
Dneska jsme si n∞co °ekli o GDI a tak si vytvo°φme takovou
aplikaci, abyste mohli hned vyu₧φt nov∞ nabytΘ v∞domosti.
Narozdφl od prvnφ Φßsti si vytvo°φme aplikaci, kterß
mß okno. To je hlavnφ a podstatn² rozdφl.
Konzolovß aplikace nemß ₧ßdne grafickΘ u₧ivatelskΘ rozhranφ, mß
pouze textovΘ a tak se u₧ivatel m∙₧e dorozumφvat z programem
pouze pomocφ textov²ch zprßv.
U₧ivatel oknovΘ aplikace mß k dispozici mnohem rozsßhlejÜφ
arzenßl grafickΘho u₧ivatelskΘho rozhranφ - user interface - UI.
M∙₧e vytvß°et libovolnß okna Φi dialogy. Na v²b∞r
je mnoho ovlßdacφch prvk∙ od jednoduch²ch
Edit Box∙ po slo₧itΘ prvky ActiveX. Vytvo°φte tak
b∞₧nou aplikaci pro Windows, kterß mß jedno Φi vφce oken
nebo dialog.
Na druhou stranu musφte znßt pom∞rn∞ dob°e za prvΘ jazyk C++
a za druhΘ samotnΘ v²vojovΘ prost°edφ, tak₧e pokud zatφm
tßpete, doporuΦuji si toto nechat na pozd∞ji.
Vytvß°φme standardnφ oknovou aplikaci MFC ve Visual C++
Ze zaΦßtku postup bude podobn² jako u prvΘho p°φkladu.
- Vyberte z menu File polo₧ku New. Otev°e se vßm dialog podobn² tomuto:
- Ujist∞te se, ₧e mßte vybranou kartu Projects a polo₧ku MFC AppWizard (exe).
- Do okΘnka Project Name napiÜte jmΘno novΘho projektu t°eba GDI. V okΘnku
location nalistujte cestu k vaÜemu programu. To druhΘ je celkem d∙le₧itΘ, jinak
se vßm projekt vytvo°φ kdesi a vy ho pak nenajdete :-)
- Ostatnφ volby (pokud n∞jakΘ jsou) nechte jak jsou a klepn∞te na tlaΦφtko OK.
- Wizard k tomuto typu projektu o hodn∞ slo₧itejÜφ. Prvnφ dialog vypadß nßsledovn∞:
Mßme nßsledujφcφ volby:
- Single document
Vytvo°φ oknovou aplikaci s jednφm oknem, kterΘ nemß ₧ßdnΘ
potomky neboli child window - potomek hlavnφho okna.
Typickou aplikacφ SDI (Single document interface) je nap°φklad
Poznßmkov² blok (Notepad). Je to nejjednoduÜÜφ oknovß aplikace
a proto ji zvolφme i my.
- Multiple documents
Narozdφl od SDI je MDI (Multiple documents interface) aplikace,
kterß mß hlavnφ okno a uvnit° tohoto okna jsou dalÜφ "d∞tskß" okna (child).
T∞chto oken tam m∙₧e b²t neomezenΘ mno₧stvφ a dajφ se r∙zn∞ rovnat a °adit.
Typickou aplikacφ je t°eba samotnΘ v²vojovΘ prost°edφ Visual C++. M∙₧ete
mφt otev°en²ch mnoho zdrojov²ch soubor∙ najednou atd.
- Dialog based
Takovß aplikace vlastnφ jeden dialog, kter² si vytvo°φte v editoru
zdroj∙. T°eba kalkulaΦka ve Windows je vlastn∞ dialog s mnoha tlaΦφtky.
- Document/View achitecture support
Tato volba je troÜku slo₧it∞jÜφ a pro nßs zatφm nepodstatnß, tak₧e jen krßtce.
Pokud chcete vytvo°it aplikaci pro Windows, siln∞ doporuΦuji nechat
tuto volbu zaÜkrtnutou. P°φÜt∞ ale uvidφte, ₧e a₧ budeme vytvß°et projekt
pro DirectX aplikaci, nechßme tuto volbu odÜktnutou, abysme si uÜet°ili trochu prßce.
- Jazyk zdroj∙
Zde vyberte jazyk, kter²m chcete, aby aplikace komunikovala s u₧ivatelem.
Äel ΦeÜtina nenφ k dispozici a nepoda°ilo se mi p°ijφt na zp∙sob, jak ji
p°idat do seznamu (pravd∞podobn∞ staΦφ nahrßt p°φsluÜnou knihovnu do adresß°e
v²vojovΘho prost°edφ).
Tak prvnφ dialog bychom m∞li za sebou. Dßle budu popisovat pouze postup SDI
aplikace, proto₧e ta je pro nßs v souΦasnΘ dob∞ d∙le₧itß, ale jsem
si jist², ₧e se postupn∞ dostaneme ke vÜem typ∙m.
- Stiskn∞te tlaΦφtko Next a objevφ se dalÜφ dialog v po°adφ:
Zde nechßme implicitnφ (p°ednastavenΘ) volby, proto₧e se jednß o podporu
databßzφ pro vaÜi aplikaci a to nßs nezajφmß a myslφm, ₧e dlouho zajφmat nebude.
- P°ejd∞me tedy rovnou dßle:
Zde op∞t nenφ nic moc zajφmavΘho. Jednß se o podporu slo₧en²ch dokument∙.
Tφm se zatφm zab²vat nebudeme, proto₧e se jedna o znaΦn∞ pokroΦilejÜφ techniky
programovßnφ. JedinΘ, co stojφ za povÜimnutφ jsou poslednφ dv∞ polφΦka Automation a
ActiveX Controls. To prvnφ aktivuje podporu Automatizace COM, co₧ je velice u₧iteΦnß
v∞c, ale op∞t vy₧aduje znaΦnΘ v∞domosti. Poslednφ polφΦko zapφnß podporu prvk∙
ActiveX. Pokud nechßte polφΦko zaÜkrtnutΘ, budete moci vklßdat prvky ActiveX
do vaÜeho projektu.
- DalÜφ dialog je velice d∙le₧it²:
Zde je mnoho voleb, tak₧e si je vezmeme p∞kn∞ popo°ßdku:
- Docking toolbar
Vytvo°φ vßm toolbar neboli hornφ liÜtu, na kterΘ jsou tlaΦφtka umo₧≥ujφcφ
rychl² p°φstup k n∞kter²m polo₧kßm menu. Vytvo°φ jednoduch² toolbar
s pßr tlaΦφtky, ale vy si ho samoz°ejm∞ m∙₧ete upravit podle sv²ch p°edstav.
- Initial status bar
Tato volba pro zm∞nu vytvo°φ stavov² °ßdek neboli liÜtu v dolnφ Φßsti okna.
- Printing and print preview
Aktivuje tisk a tiskov² nßhled pro vaÜi aplikaci. StaΦi, kdy₧ budeme
mφt zaÜkrnutΘ toto polφΦko a vaÜe aplikace bude tisknout obsah okna.
Jak snadnΘ!
- Context-sensitive help
Zapne podporu kontextovΘ nßpov∞dy.
- 3D-controls
Tato volba ovliv≥uje vzhled prvk∙ na dialozφch, v oknu atd. Pokud z∙stane
polφΦko nezaÜkrtnutΘ budou vÜechny prvky plochΘ.
- MAPI
Aktivuje podporu MAPI (Messaging Application Programming Interface), pomocφ
kterΘ budete moci nap°φklad odesφlat emaily z vaÜφ aplikace.
- Windows Socket
Podpora TCP/IP ve vaÜφ aplikaci vhodnß pro sφ¥ov² software.
- Typ toolbaru
Umo₧≥uje programßtorovi nastavit dva r∙znΘ typy toolbaru.
Volba Normal vytvo°φ standardnφ toolbar, kter² znßme
t°eba MS Wordu. Druhß volba Internet Explorer ReBars vytvo°φ
toolbar s velk²mi tlaΦφtky, kterΘ uvidφte t°eba v Internet
Exploreru.
- PoΦet naposledy pou₧φvan²ch soubor∙
Zde zadejte maximßlnφ poΦet soubor∙, kter² se zobrazφ v menu File
jako Recent Files - Napoledy pou₧φvanΘ soubory.
Jak vidφte, mo₧nostφ je opravdu hodn∞. Pro nßÜ prvnφ p°φklad s GDI bude
staΦit jednoduchß aplikace, tak₧e vÜechny volby nechte nezaÜktnutΘ.
Jist∞ jste si vÜimli tlaΦφtka Advanced.... Toto tlaΦφtko umo₧≥uje
nastavenφ dalÜφch v∞ci, jako jsou extenze vaÜich dokumentu, n∞kterΘ
atributy samotnΘho okna atd.
- P°ejd∞me na dalÜφ dialog:
Zde jsou k dispozici t°i nastavenφ:
- MFC Standard nebo Windows Explorer
Vytvo°φ bu∩ normßlnφ aplikaci s jednφm oknem nebo
aplikaci typu Explorer, kde je hlavnφ okno rozd∞leno na
dv∞. Pr∙zkumnφk ve Windows je aplikace tohoto typu.
- Generovßnφ komentß°∙
VC++ je tak chytrΘ, ₧e vßm ke k≤du vygeneruje
svΘ komentß°e. DoporuΦuji tuto volbu nechat
v p∙vodnφm nastavenφ, proto₧e komentß°e se hodφ.
- Zp∙sob pou₧itφ knihoven MFC
Nastavuje zp∙sob, jak²m jsou knihovny MFC slinkovßny
s vaÜφm programem. Pokud nechßte dynamickΘ linkovßnφ,
vßÜ program bude mφt pßr kilobajt∙, ale bude zßvisl²
na dvou knihovnßch msvcrt.dll a mfc42.dll , kterΘ koncov²
u₧ivatel nemusφ mφt na svΘm poΦφtaΦi, tak₧e vßÜ program
nep∙jde spustit. Druhß volba vytvo°φ v²sledn² program
mnohem v∞tÜφ (kolem 1MB), ale p°estane b²t zßvisl²
na t∞chto knihovnßch.
- KoneΦn∞ je tu poslednφ krok a aplikace bude hotovß:
Na poslednφm dialogu vidφte vÜechny t°φdy, kterΘ se VC++
hodlß vytvo°it. M∙₧ete zm∞nit jmΘna t°φd a zdrojov²ch soubor∙.
Vidφte i t°φdu pohledu CGDIView . Prßv∞ v nφ se nachßzφ
funkce OnDraw() , kterou upravujete v p°φkladu.
2.3. Zßv∞r
Vidφte, ₧e AppWizard vßm vytvo°φ podstatnou Φßst aplikace, p°esto
to podstatnΘ z∙stane v₧dy na vßs. ┌kolem AppWizardu je vytvo°it
hrubou kostru programu. Praktick² ka₧d² typ projektu mß sv∙j vlastnφ
AppWizard a navφc si m∙₧ete navrhovat vlastnφ.
Co si povφme p°φÜt∞?
P°φÜt∞ mßm v plßnu vßm pov∞d∞t n∞co o mo₧nß zßhadnΘm okn∞
po levΘ stran∞ IDE, kterΘ obsahuje ClassView, ResourceView
a FileView. Navφc si povφme, jak upravit aplikaci MFC tak, aby
vyhovovala DirectX, proto₧e p°φÜt∞ zaΦneme teorii DirectDraw.
Samoz°ejm∞ dotazy a p°ipomφnky uvφtßm!
T∞Üφm se p°φÜt∞ nashledanou.
|