O vývojových prostředích jsem se již zmiňoval v obou předchozích kurzech. Tento kurz vám pomůže vytvářet aplikace v Microsoft Visual C++ 6.0, který je součástí Visual Studia 6.0. Visual Studio obsahuje kromě VC++ (Visual C++) také mnoho jiných vývojových prostředí například Visual Basic nebo Visual J++. Dále časem použijeme mnoho pomocných aplikací jako je třeba Spy++, pro monitoring procesů, vláken a oken. V současné době existuje beta verze Visual Studio 7.0 (Visual Studio.NET), přesto se budeme zabývat výhradně verzí 6.0. Kdo má verzi 5.0 nebo 4.0 nemusí se bát, protože tyto tři verze jsou témeř identické. Zásadní rozdíl je však ve verzích 1.0 a 2.0. Tyto dvě verze totiž generují 16-bitové aplikace, zatímco verze 4.0, 5.0 a 6.0 generují aplikace 32-bitové. Proto první dvě verze silně nedoporučuji, protože takovéto aplikace jsou spíše pod Windows 3.11, což už v dnešní době není to pravé.
Po instalaci Visual Studia pustíme
Visual C++ z menu Start|Microsoft Visual Studio 6.0|Microsoft Visual C++ 6.0. Po prvním
spuštění se objeví naprosto šedá prázdná plocha, která je vidět na prvním obrázku.
Ve Visual C++ vždy pracujete s tzv. Projekty (Projects). I pro jeden jediný soubor musí být vytvořen
projekt. Můžete vytvořit nový soubor, ale když se pokusíte kód zkompilovat, IDE (Integrated Development
Environment) vám oznámí, že ke
kompilaci je nutné mít otevřený aktivní projekt. Pokaždé, kdy chcete vytvořit něco nového
(ať už projekt nebo jen soubor), vyberte
z menu File položku New a zobrazí se vám dialog, který vidíte na obrázku. Pokud nemáte
otevřený žádný projekt, zobrazí se přímo karta pro vytvoření projektu (Projects). Pokud máte otevřený
projekt, zobrazí se karta pro vytvoření souboru (Files). Na kartě Workspaces, můžete vytvořit
Blank Workspace. Jaký je rozdíl mezi Projektem a Workspace? Workspace slouží především pro zprávu
více projektů, které spolu mohou souviset (ale nemusí). Později si ukážeme, jak tato volba funguje.
Pomocí karty Other documents můžete vytvořit dokumenty třeba Wordu či Excelu. Tuto volbu využívat
nebudeme.
Projděte si jednotlivé položky na prvních dvou kartách, které nás prozatím zajímají. Na kartě Files
najdete
klasické C/C++ Header files a C++ Source files, pomocí kterých vytvoříte hlavičkové a zdrojové soubory s
příponou
.h
a .cpp
.
Prakticky nic jiného z této karty neužijeme, protože například bitmapu (Bitmap file) lze přidat
jinou a mnohem logičtější cestou přes zdroje (Resources). Na kartě Projects je to trochu
složitější. Pokud znáte
MFC (Microsoft Foundation Class) máte velkou výhodu. V kurzu o C++ budeme využívat
projekt typu Win32 Console Application, který
po vytvoření
obsahuje funkci main() a nic víc. Pro druhý kurz o DirectX využijeme projekt
MFC AppWizard [exe], který
dál mohutně upravíme pro naše potřeby. Přesný postup bude nejspíše v příští lekci.
Pokaždé, když chcete vytvořit projekt musíte zadat jméno a cestu projektu. Žádné dálší volby
v tomto dialogu nás prozatím nezajímají. Ke každému typu projektu se spustí jiný tzv. Wizard
(česky Kouzelník, ale spíše se hodí Průvodce), který
vás provede zbytkem vytváření projektu. Protože pro každý projekt je Wizard zcela jiný, nemohu tady
rozepsat všechny Wizardy. Popíšu pouze ty, které budeme potřebovat v našich lekcích.
V této první lekci lehce popíšu vývojové prostředí. Konkretní projekty budeme vytvářet až příště,
kdy je budeme skutečně potřebovat. Když vytvoříme jakýkoliv projekt okno IDE se změní. Otevře
se tzv. ClassView, které vidíte po levé straně. ClassView je pouze jediná karta tohoto okna. ClassView
zobrazuje jednotlivé třídy projektu, včetně jejich funkcí a proměnných. Dále vždy obsahuje
adresář Globals, kde najdete funkci main() nebo objekt aplikace theApp. Další
kartou, kterou má každý projekt, je tzv. FileView, kde vidíte všechny soubory, které projekt
obsahuje rotříděné do jednotlivých adresářů jako například Header files nebo Source files.
Už ne každý
projekt může navíc obsahovat třetí kartu ResourceView, kde vidíte všechny zdroje jako jsou bitmapy,
kurzory nebo ikony přidané do projektu. Tuto kartu obsahují MFC projekty. Po pravé straně zůstane
šedá plocha, ale když například poklepete na fuknci main() v ClassView, otevře se okno, kde
uvidíte tělo této funkce. Pokud se program pokusíte zkompilovat například stiskem klávesy F5, objeví
se třetí okno, kterému říkáme Output window neboli výstupní okno. Opět obsahuje několik karet.
Pro nás jsou důležité první dvě karty - Build a Debug. Na první karte Build vidíme průběh kompilace
a sestavení programu. Na kartě
Debug vidíme průběh programu, například chybové hlášky atd. Vše je krásně vidět na dalším obrázku.
Okno č. 1 je ClassView/FileView, č.2 je vlastní zdrojový kód a č.3 je okno Output, kde vidíte
na spodní straně všechny záložky.
Možná vás právě napadá otázka jakým způsobem se dá program spustit. Nejprve si proberem menu Build,
které celé vidíte na následujícím obrázku.
První položka Compile Pokus.cpp nedělá nic jiného než, že pouze zkompiluje aktivní soubor. Zajímavější
je druhá volba Build Pokus.exe. Ta zkompiluje a sestaví všechny potřebné soubory, aby byl program
spustitelný, ale nespustí jej. Další v pořadí je Build All, která zkompiluje a sestaví program úplně
od začátku. Začne vlastně tím, že smaže všechny předchozí
.obj
soubory a vytvoří zcela nové. Batch build
spíše využijete při kompilaci více projektů najednou. Můžete přesně nastavit, které projekty zkompilujete.
Další položka Start Debug, obsahuje další malé menu. Pro nás nejdůležitější je položka Go!, která
zkompiluje, sestaví a nakonec spustí celý program.
Všímejte si, že téměř u každé položky je klávesová
zkratka, kterou akci provede přímo z okna VC++. Není úplně od věci se pár z nich naučit.
Kompilátor VC++ pracuje ve dvou základních režimech: Debug a Release. První z nich vytvoří Debug verzi programu, tj. verzi, kterou ladíme až vznikne funkční program bez chyb (pozn. žádný program není bez chyb). Když vše funguje tak jak má, vypustíme tzv. Release verzi, která je ochuzena o debugovací informace tudíž je mnohem menší a rychlejší. Proč o tom všem mluvím? Týká se to dalších položek v menu Build. Položka Set Active Configuration nastaví, zda-li chceme kompilovat v režimu Debug či Release. Kompilátor ovšem může pracovat i zcela jiným vámi nadefinovaným způsobem. K editaci režimů slouží poslední zajímavá položka Configurations, kde můžete přidávat a odstraňovat režimy. Pokud byste zde hledali vlastní nastavení jednotlivých režimů, pak je najdete v menu Project a Settings. Samotné nastavení je však složitější a probereme si ho později. Jak už jsem psal výše, průběh kompilace a sestavení je zaznamenáván v dolním okně na kartě Build. Samozřejmě nastavení režimů pro každý projekt je naprosto rozdílné. Například projekt MFC vkládá své specialní dynamické knihovny, aby programátor mohl využít výhod MFC. Naproti tomu aplikace Win32 vkládá standardní knihovny Windows a o MFC neví naprosto nic.
Ještě vám ve zkratce něco povím o MFC a o "starém" Windows API. API obecně znamená aplikační
programovací rozhraní pomocí kterého programátor využívá například pevný disk nebo grafickou
kartu. Samotné Windows jsou částečně programovány pomocí Windows API. Firma Microsoft
si ovšem byla vědoma toho, že Windows API je složité a v některých případech nepružné.
Programování je zdlouhavé, protože programátor si musí napsat hodně vlastního kódu.
Proto vznikla knihovna MFC (Microsoft Foundation Class), které vnitřně využívají
Windows API, ale z pohledu programátora se jde o daleko přátelštější rozhraní.
Například práce z řetězci kompletně zapouzdřuje třída CString
.
Protože MFC je nad
Windows API, musí být zakonitě pomalejší. Proto je stále Windows API nepostradatelné.
Mnoho funkcí totiž MFC vůbec neobsahuje a tak vám nic jiného nezbyde než použít "staré" API.
Když vytvoříte projekt s MFC podoporou, můžete používat MFC i Windows API. Pokud však
vytvoříte například Win32 Console Application, MFC využít nelze.
Tato problematika je tak rozsáhlá, že v každé lekci jí bude věnováno několik řádek. Samotnou knohovnu MFC začneme probírat někdy na začátku příštího roku.
Na závěr vám prozradím, co bude v příští lekci. Příště navážu na předchozí dva kurzy tzn. si vytvoříme jak konzolovou aplikaci tak projekt MFC, který upravíme tak, aby byl vhodný pro DirectX.
Těším se příště nashledanou.