Pom∞rn∞ Φasto se v diskuznφch f≤rech objevuje dotaz, kde najφt n∞jakou uΦebnici MFC. Zatφm jedinß odpov∞∩ zn∞la kupte si knihu .... Na internetu se v ΦeÜtin∞ zatφm nenachßzela ₧ßdnß uΦebnice MFC a tak jsem u₧ delÜφ dobu p°em²Ülel, ₧e n∞jakou napφÜu. A koneΦn∞ jsem se k tomu dostal. Nebude to ₧ßdnß podrobnß uΦebnice ale spφÜe praktick² nßvod jak s MFC zaΦφt. Aby jste se mohli uΦit MFC, m∞li by jste alespo≥ trochu um∞t C++ a znßt alespo≥ teoreticky jak fungujφ programy ve Win32 API. UΦebnic C++ na internetu najdete pom∞rn∞ dost, staΦφ jen zahledat a dobrou uΦebnici Win32 API od Radka Chalupy najdete na jeho strßnkßch www.windev.cz nebo na www.builder.cz
Pokud jste jeÜt∞ o MFC neslyÜeli urΦit∞ vßs bude zajφmat co to je. MFC - Microsoft foundation classes je sada t°φd, kterß zaobaluje a zjednoduÜuje Win API, tak₧e nemusφte po°ßd dokola psßt ten sam² k≤d jako je WinMain a procedura okna atd. P°itom vßm v∙bech nebrßnφ v pou₧φvßnφ Win API funkcφ. Ve skuteΦnosti s MFC n∞kterΘ v∞ci bez pou₧itφ WIn API v∙bech nejdou. Tak₧e tΘm∞° ka₧d² program v MFC je ve skuteΦnosti kombinacφ MFC a Win API. A pokud vßm nevyhovuje chovßnφ p°edprogramovanΘho k≤du tak ve v∞tÜin∞ p°φpad∙ staΦφ p°epsat n∞jakou (v∞tÜinou virtußlnφ) funkci.
To by na ·vod staΦilo.
V tomto dφle se dozvφte jak zaΦφt vytvß°et MFC aplikaci, co₧ znamenß jak nastavit MFC AppWizard a jakΘ mß vlastn∞ mo₧nosti.
Tak₧e zaΦneme. Spus¥te Visual C++ a z menu zvolte polo₧ku File-New jako by jste cht∞li psßt Win32 nebo konzolovou aplikaci, ale mφsto nich zvolte MFC AppWizard (1), zadejte jmΘno programu (2) a adresß°, kde majφ b²t zdrojovΘ k≤dy programu ulo₧eny (3), jak vidφte na nßsledujφcφm obrßzku.
Po stisku tlaΦφtka OK se spustφ vlastnφ AppWizard. V prvnφm kroku si m∙₧ete
zvlolit jak² typ aplikace vlastn∞ chcete vytvß°et (jak vidφte na nßsledujφcφm
obrßzku). Mßte na v²b∞r ze t°φ mo₧nostφ:
Single document (1) - klasickß win aplikace s jednφm hlavnφm oknem (tu pou₧ijeme
my)
Multiple documents (2) - klasickß win aplikace s jednφm hlavnφm oknem a n∞kolika
d∞tsk²mi (jako p°φklad takovΘho typu aplikace si m∙₧ete p°edstavit MS
Word do verze 2000)
Dialog based (3) - aplikace na zßklad∞ dialogu (typick²m p°φkladem je
standartnφ kalkulaΦka z windows)
P°i v²b∞ru mo₧nosti se vßm v levΘ hornφ Φßsti dialogu zobrßzφ obrßzek s nßhledem jak bude aplikace p°ibli₧n∞ vypadat (4).
Dßle m∙₧ete zvolit zda budete pou₧φvat architekturu dokumetn pohled nebo ne pomocφ zaÜkrtßvacφho polφΦka (5). To u₧ se net²kß vzhledu aplikace, ale struktury zdrojovΘho k≤du, kter² AppWizard vygeneruje a schopnostφ, kterΘ bude aplikace na zaΦßtku mφt. V naÜem p°ipad∞ jej nechßme zatr₧enΘ, proto₧e dßvß naÜφ aplikaci nejvφce schopnostφ s nejmenÜφ nßmahou.
A nakonec si m∙₧ete zvolit v jakΘm jazyce budou zdroje (resources) vaÜφ aplikace (6). Nechte v²chozφ hodnotu (angliΦtina), AppWizard umo₧≥uje jen pßr mo₧nostφ, ale v editoru zdroj∙ lze nastavit tΘm∞° libovoln² jazyk vΦetn∞ ΦeÜtiny.
V dalÜφm kroku se urΦuje jak² chcete zp∙sob podpory databßzφ. Nechte v²chozφ mo₧nost a to ₧ßdnß podpora databßzφ jak vidφte na dalÜφm obrßzku. Databßze v MFC jsou samostatnß kapitola a abych se p°iznal jeÜt∞ jsem v MFC ned∞lal ₧ßdnou aplikaci, kterß by databßze pot°ebovala. Ale nenφ to zase p°φliÜ obtφ₧nΘ.
V dalÜφm kroku si volφte jak² chcete typ podpory pro vklßdanΘ dokumenty. Pomocφ t∞chto voleb si m∙₧ete vytvo°it aplikaci, kterß bude um∞t vklßdat do sv²ch dokument∙ dokumenty jin²ch aplikacφ (nap°. jako vlo₧enφ listu z excelu do wordu) nebo naopak vklßdat svΘ dokumenty do dokument∙ jin²ch aplikaci nebo takovou, kterß nep∙jde spustit samostatn∞ ale jen z dokumentu jinΘ aplikace, kam byl jejφ dokumen vlo₧en. Bohu₧el jsem jeÜt∞ nikde nevid∞l po°ßdn² nßvod jak takovΘ aplikace psßt a moje vlastnφ pokusy nedopadly moc slavn∞, tak₧e tyto mo₧nosti nevyu₧ijeme. Poslednφ dv∞ zaÜkrtßvacφ polφΦka na tomto dialogu jsou Automation (sßm po°ßdn∞ nevφm co d∞lß) a ActiveX Controls, ktarß umo₧nφ vklßdßnφ ActiveX do aplikace.
V dalÜφm kroku si m∙₧ete zvolit co vÜechno mß vaÜe aplikace um∞t. Zda mß mφt panel nßstroj∙ (1), stavov² °ßdek (2), jestli mß um∞t tisknout a zobrazit nßhled p°ed tiskem (3), kdy₧ tuto mo₧nost nezatrhnete, lze tisk a podporu tisku velice jednoduÜe p°idat i pozd∞ji. DalÜφ polo₧ka urΦuje, zda ve svΘ aplikaci budete mφt i nßpov∞du (4), ale ve skuteΦnosti ned∞lß nic jinΘho, ne₧ ₧e p°idß polo₧ku menu pro nßpov∞du a aplikace potom p°i jejφm vybrßnφ vy₧aduje soubor jmeno_aplikace.hlp, kter² musφte vytvo°it sami. Pßtß polo₧ka (5) urΦuje zda vaÜe ovlßdacφ prvky budou mφt 3D vzhled. Ve skuteΦnosti jsem nepozoroval ₧ßdn² rozdφl a¥ byla tato polo₧ka zatrhnuta nebo ne. MAPI (6) urΦuje zda vaÜe aplikace bude um∞t pracovat s maily. JeÜt∞ jsem to nezkouÜel, tak₧e nevφm jak se to projevφ ve zdrojovΘm k≤du a funkΦnosti. Poslednφ polo₧ka (7) urΦuje zda vaÜe apliace mß um∞t komunikovat po sφti TCP/IP.
Dßle si volφte jak majφ vypadat vaÜe panely nßstroj∙ jestli jako u klasickΘ aplikace (8) nebo jako v internet exploreru (9). Hlavnφ rozdφl je ve velikosti panel∙ nßstroj∙. V editaΦnφm polφΦku (10) m∙₧ete nastavit kolik naposled otev°en²ch dokument∙ si bude vaÜe aplikace pamatovat a zobrazovat v menu.
TlaΦφtkem Advanced... (11) se dostanete do rozÜφ°enΘho nastavenφ. Zde m∙₧ete specifikovat p°φponu soubor∙ vytv°ß°en²ch vaÜφ aplikacφ (1), pokud toto polφΦko nechßte prßzdnΘ, tak si vaÜe aplikace nezaregistruje ₧ßdnou p°φponu. Dßle m∙₧ete nastavit titulek hlavnφho okna aplikace (2). Ten se ve skuteΦnosti bude sklßdat z toho co zadßte zde a p°ed tφm bude jmΘno otev°enΘho souboru odd∞lenΘ pomlΦkou. JmΘno filtru (3) bude pou₧ito v dialozφch otev°φt a ulo₧it stejn∞ jako krßtkΘ (4) a dlouhΘ (5) jmΘno novΘho dokumentu.
Na druhΘ zßlo₧ce m∙₧ete specifikovat vlastnosti hlavnφho okna aplikace. Use split window (6) p°idß mo₧nost rozd∞lenφ okna na dv∞ Φßsti s pohledem na r∙znΘ Φßsti dokumentu v n∞m zobrazenΘ jako to umφ t°eba MS Word. Thick frame (7) urΦuje zda oknu p∙jde m∞nit velikost chycenφm za okraj a ta₧enφm (zatr₧enΘ znamenß, ₧e p∙jde). DalÜφ t°i polo₧ky urΦujφ jakß tlaΦφtka se zobrazφ v titulku aplikace. Titulek bude obsahovat tlaΦφtko pro minimalizaci (8), maximalizaci (9) a pro zav°enφ (10). Poslednφ dv∞ polo₧ky urΦujφ v²chozφ stav okna aplikace zda bude minimalizovanΘ (11) nebo maximalizovanΘ (12). Pokud nenφ zaÜkrtnuta ani jedna tato mo₧nost tak bude okno v normßlnφm stavu.
![]() |
![]() |
V dalÜφm kroku AppWizardu urΦujeme zda mß naÜe aplikace vypadat jako klasickß aplikace (1) nebo mß mφt d∞lenΘ okno jako pr∙zkumnφk (2), to vede na aplikaci kterß mß stejn∞ jako pr∙zkumnφk v levΘ Φßsti rozbalovacφ strom a v pravΘ Φßsti seznam polo₧ek.
Dßle m∙₧eme urΦit zda chceme vygenerovat poznßmky ke zdrojovΘmu k≤du (3) nebo ne (4). Je jedno co si zvolφte. Jß osobn∞ doporuΦuji je generovat, proto₧e obΦas v nich budou zajφmavΘ aplikace, i kdy₧ v∞tÜinou jsou typu "zde piÜte sv∙j k≤d".
Poslednφ dv∞ mo₧nosti urΦujφ jak²m zp∙sobem do vaÜφ aplikace zahrnout knihovnu MFC. Jestli jako p°ipojenou dll knihovnu (5), to vede na menÜφ exe soubor, ale na cφlovΘm poΦφtaΦi musφte mφt knihovnu mfc42.dll a v∞tÜinou i msvcrt.dll, nebo MFC p°ilinkovat staticky (6), potom mßte v∞tÜφ (o dost) exe soubor, ale zato vßs nemusφ zajφmat zda je na poΦφtaΦi nainstalovßna pot°ebnß dll knihovna. I kdy₧ dnes u₧ jsou tyto knihovny na v∞tÜin∞ poΦφtaΦ∙.
V poslednφm kroku vßm pr∙vodce umo₧nφ zmenit jmΘna generovan²ch t°φd a odpovφdajφcφh soubor∙. V listboxu (1) si vyberete kterou t°idu chcete p°ejmenovat a potom m∙₧ete zm∞nit jejφ jmΘno (2), hlaviΦkov² soubor ve kterΘm bude ulo₧ena jejφ deklarace (3), jmΘno souboru s jejφ definicφ (4) a u t°φdy pohledu i jejφho p°edka (5). Volbou p°edka m∙₧ete ovlivnit co vaÜe aplikace bude um∞t. V∞tÜinou asi budete vybφrat CView, kterΘ sice nemß ₧ßdnΘ zvlßÜtnφ schopnosti, ale pro v∞tÜinu aplikacφ si je budete chtφt napsat sami. Ale pokud by jste si zvolili CEditView hned mßte hotov² Notepad, nebo CHtmlView umo₧nφ vaÜφ aplikaci zobrazovat www strßnky bez napsßnφ jedinΘ °ßdky k≤du.
Po stisku tlaΦφtka Finish se vßm zobrazφ souhrn s nastavenφm, kterΘ jste si pro svou aplikaci zvolili a po jeho odsouhlasenφ tlaΦφtkem OK u₧ mßte hotovou kostru aplikace, kterß u₧ toho pom∞rn∞ hodn∞ umφ.
Sestavte ji stiskem klßvesy F7 (nebo menu Build - Build jmeno_aplikace.exe) a mßte hotovou zßkladnφ aplikaci, kterou m∙₧ete upravit podle sv²ch po₧adavk∙. Spustit ji m∙₧ete stiskem klßvesy F5 (v debug m≤du), CTRL+F5 (normßlnφ spuÜt∞nφ) a nebo tφm, ₧e si najdete exe soubor v adresß°i vaÜeho projektu. Pokud by jste m∞li stejnΘ nastavenφ jako na prvnφm obrßzku v tomto Φlßnku tak by jste exe soubor naÜli v adresß°i C:\programy\mfc\ a jeho podadresß°i Release (koneΦnß - release verze) nebo Debug (ladφcφ - debug verze).
Jakou verzi chcete sestavit m∙₧ete zvolit v menu Build - Set Active Configuration. Rozdφl v t∞chto dvou verzφch je, ₧e p°i Release verzi nejsou v exe zahrnuty ladφcφ informace, co₧ vede na menÜφ exe soubor a rychlejÜφ program, ale zase s nφm neumφ pracovat debuger, tak₧e umo₧nφ ladit pouze k≤d v assembleru, kde₧to v debug verzi p°i lad∞nφ m∙₧ete pracovat p°φmo s vaÜφm zdrojov²m k≤dem. Pokud se chcete dozv∞d∞t jak se ve Visual C++ pou₧φvß debuger, tak se m∙₧ete podφvat na tyto dva Φlßnky - Lad∞nφ 1 a Lad∞nφ 2, ale doporuΦuji jejich Φtenφ, a₧ budete trochu rozum∞t MFC, nejd°φve po p°eΦtenφ nßsledujφcφho dφlu.
A tady je nßhled na v²slednou aplikaci kterou dostaneme pouze pomocφ pr∙vodce bez napsßnφ jedinΘ °ßdky k≤du.