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