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.

  1. Vyberte z menu File polo₧ku New. Otev°e se vßm dialog podobn² tomuto:



  2. Ujist∞te se, ₧e mßte vybranou kartu Projects a polo₧ku Win32 Console Application.
  3. 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 :-)
  4. Ostatnφ volby (pokud n∞jakΘ jsou) nechte jak jsou a klepn∞te na tlaΦφtko OK.
  5. 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.

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

  1. Vyberte z menu File polo₧ku New. Otev°e se vßm dialog podobn² tomuto:



  2. Ujist∞te se, ₧e mßte vybranou kartu Projects a polo₧ku MFC AppWizard (exe).
  3. 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 :-)
  4. Ostatnφ volby (pokud n∞jakΘ jsou) nechte jak jsou a klepn∞te na tlaΦφtko OK.
  5. 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.

  6. 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.
  7. 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.
  8. 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.
  9. 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.

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

Ji°φ Formßnek