Kurz IDE Visual C++ (1.)

1.1. Krátký úvod

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

1.2. Základní popis prostředí

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.

1.3. Způsoby kompilace programu

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.

1.4. MFC versus Win32 API

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.

1.5. Závěr

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.