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