Kurz Visual C++ (5.) Po delÜφ dob∞ je tu novß lekce o v²vojovΘm prost°edφ VC++. Lekce je rozd∞lena na dv∞ Φßsti, p°iΦem₧ prvnφ Φßst bude o editoru VC++. Dozvφte se nap°φklad, jak lze formßtovat text a co vÜechno se dß nastavit pro IDE. V druhΘ Φßsti se zam∞°φme na dynamickΘ knihovny a na sprßvu v∞tÜφch projekt∙. Dovφte se, jak vklßdat dalÜφ projekty do stßvajφcφho projektu a zajistit, aby se kompilovaly ty sprßvnΘ projekty. 5.1 Editor Visual C++Zßlo₧kyZßlo₧ky jsou velmi ·Φinn²m prost°edkem pro navigaci v souboru. Pou₧φvajφ se pro
rychl² p°φstup k nejpou₧φvan∞jÜφm °ßdkßm zdrojovΘho k≤du
(klßvesovou zkratkou). Existujφ dva typy zßlo₧ek: pojmenovanΘ a nepojmenovanΘ. Hlavnφ rozdφl mezi nimi je, ₧e pojmenovanΘ zßlo₧ky
se zachovßvajφ i po uzav°enφ projektu a jeho op∞tovnΘm otev°enφ, ale nepojmenovanΘ ne. V²hodou nepojmenovan²ch zßlo₧ek ale je, ₧e je
lze nastavit rychle nastavit (klßvesovou zkratkou Oproti tomu pro nastavenφ pojmenovan²ch zßlo₧ek pou₧ijte klßvesovou zkratku Pro p°echod na zßlo₧ku pou₧ijte klßvesovΘ zkratky Pohyb mezi zßvorkamiVe zdrojovΘm k≤du jsou velmi ΦastΘ konstrukce uzav°enΘ mezi zßvorkami. M∙₧e se jednat o bloky k≤du uzav°enΘ ve slo₧en²ch zßvorkßch, nebo o
struktury s kulat²mi zßvorkam ve v²razech, ve kter²ch je n∞kdy velmi Üpatnß orientace, kdy nem∙₧eme najφt zavφracφ zßvorku k otevφracφ. Visual C++
toto °eÜφ velice jednoduch²m zp∙sobem: pokud je kurzor p°ed n∞jakou zßvorkou (a¥ u₧ otevφracφ nebo zavφracφ) je mo₧nΘ najφt jejφ pßr
klßvesovou
zkratkou Podmφnky preprocesoruPou₧φvßte-li podmφn∞n² p°eklad pomocφ podmφnkov²ch direktiv preprocesoru, m∙₧ete pro rychl² p°esun mezi direktivami pou₧φvat klßvesovΘ zkratky
DalÜφ mo₧nosti hledßnφ
Tyto klßvesovΘ zkratky (a₧ na Informace pro prohledßvßnφ jsou mnohem v²konn∞jÜφ, pomocφ nich je mo₧nΘ nechat si zobrazit strukturu zdrojovΘho k≤du. Tato mo₧nost je dostupnß
p°es klßvesovou zkratkou Dialog Go ToNechcete-li pou₧φvat klßvesovΘ zkratky, m∙₧ete vyvolat dialog Go To klßvesovou zkratkou DalÜφ zajφmavΘ klßvesovΘ zkratkySestavenφ a p°eklad
Editor
5.2. Dynamicky linkovanΘ knihovny - DLLTato Φßst o DLL nenφ pro ty, kte°φ se cht∞jφ dozv∞d∞t, jak pracujφ DLL, ale pro ty, kte°φ cht∞jφ v∞d∞t, jak DLL vytvo°it a jak ji zakomponovat do stßvajφcφho projektu, p°φpadn∞ jak pracovat s jejφmi exportovan²mi funkcemi Φi t°φdami. To znamenß, ₧e zde nebudu vysv∞tlovat jak²m zp∙sobem se DLL p°ipojuje k hlavnφmu programu a ani zde nebudu vysv∞tlovat vnit°nφ strukturu DLL. 5.2.1 Typy projekt∙ DLLVe Visual C++ mßme hned n∞kolik typ∙ dynamick²ch knihoven, kterΘ m∙₧eme vytvo°it. V²slednΘ knihovny jsou velice podobnΘ, ale odliÜn² je zp∙sob jejich programovßnφ a odliÜnΘ jsou takΘ schopnosti knihovny. Za prvΘ m∙₧ete vytvo°it Win32 DLL, to je tak ·pln∞ nejzßkladn∞jÜφ knihovna, kterß ovÜem neumφ pracovat s MFC. Dßle m∙₧ete vytvo°it knihovnu s podporou MFC, ale ty se dßle d∞lφ na dva druhy. MFC knihovna m∙₧e b²t bu∩ b∞₧nß (regular) nebo rozÜi°ujφcφ (extension). B∞₧nß knihovna navφc m∙₧e linkovat MFC knihovny bu∩ staticky nebo dynamicky, to je stejnΘ jako u projektu EXE (o statickΘm a dynamickΘm linkovßnφ MFC knihoven byla °eΦ v minulosti). Jinak knihovna Win32 a b∞₧nß DLL MFC se od sebe liÜφ jen mßlo, samoz°ejm∞ podstatn² rozdφl je v pou₧φvßnφ MFC, ale jinak jsou identickΘ. Rozdφlnß je ovÜem rozÜφ°enß knihovna DLL. 5.2.2. B∞₧nß versus rozÜφ°enß DLLRozÜφ°enß knihovna narozdφl od b∞₧nΘ m∙₧e exportovat t°φdy, ΦlenskΘ funkce, p°etφ₧enΘ funkce apod., zkrßtka podporuje objektovΘ C++. Tohle vÜechno b∞₧nß knihovna neumo₧≥uje a m∙₧ete tak exportovat pouze C funkce. Pokud ale budete chtφt knihovnu pou₧itelnou i z jinΘho programovacφho prost°edφ, m∞li byste pou₧φt b∞₧nou knihovnu. DalÜφ je rozdφl ve vyhledßvßnφ zdroj∙ (resources - dialogy, bitmapy, kursory apod.). Pokud mßte ulo₧en² n∞jak² zdroj v rozÜφ°enΘ knihovn∞ a tento zdroj mß v programu unikßtnφ ID, pak ho program najde. Program se toti₧ nejd°φve podφvß, zda-li nemß hledan² zdroj u sebe, pokud ne, hledß v rozÜφ°en²ch knihovnßch p°ipojen²ch k tomuto programu, nakonec hledß zdroje v knihovnßch MFC. Pokud se ID opakujφ ve vaÜem programu a v knihovn∞, pak se pou₧ije zdroj z programu a ne z knihovny! B∞₧nΘ knihovny se neprohledßvajφ. 5.2.3. P°φkladV²sledkem tΘto lekce bude projekt, kter² obsahuje program EXE a jednu rozÜi°ujφcφ knihovnu. Zkusφme si vytvo°it jednoduchou t°φdu a tu exportovat. Navφc si ukß₧eme, jak ve VC++ nastavit projekt tak, aby se rozÜi°ujφcφ knihovna linkovala k naÜemu program EXE. Nynφ si vytvo°φme tzv. Blank Workspace, co₧ je ·pln∞ prßzdn²
projekt, kter² neobsahuje ₧ßdn² pod projekt. Je to snadnΘ! V menu File
vyberte New. Na nßsledujφcφm dialogu zvolte Workspaces a
zde Blank Workspace. VepiÜte jmΘno do p°φsluÜnΘho okΘnka a
stiskn∞te OK. VÜimn∞te si, ₧e v Classview nevidφte zatφm nic.
Zvolte MFC Extension DLL a Finish! Nynφ vidφte v ClassView zßsadnφ rozdφl. Projekt se p°idal k naÜemu programu, tak₧e mßte dva projekty v jednom workspace. Ve workspace m∙₧e b²t jen jeden projekt aktivnφ (to je ten, kter² se kompiluje a spustφ po stisku F5). K tomuto aktivnφm projektu se kompilujφ ty projekty, kterΘ jsou pot°eba pro sprßvn² b∞h aktivnφho projektu. Jak nastavφme, kter² projekt zßvisl² na kterΘm? Velice snadno. VC++ mß toto nastavenφ p°φmo v sob∞. Ve menu Project zvolte polo₧ku Dependencies (zßvislosti): V prvnφm okΘnku zvolte projekt, kter² chcete modifikovat (tj. projekt,
kterß mß b²t na n∞kom zßvisl²). V druhΘm okΘnku pak vidφte, na kom
aktußlnφ projekt m∙₧e b²t zßvisl². My zde mßme pouze Knihovnu, tak₧e tu
zaÜkrtn∞te a dejte OK. Kdybyste nynφ oznaΦili jako aktußlnφ Knihovnu,
zjistili byste, ₧e ji₧ nem∙₧e b²t zßvislß na Programu. To je logickΘ. Kdy₧
je Program zßvisl² na Knihovn∞, nem∙₧e b²t zßrove≥ Knihovna zßvislß na
Programu. Lze tedy nastavit jen jednosm∞rnou zßvislost. Toto nastavenφ
zßvislosti za prvΘ zp∙sobφ, ₧e se bude kompilovat projekt Knihovny
kdykoliv, kdy budete kompilovat Program, Φili program se nespustφ, ani₧ by
se nejd°φve nevytvo°ila Knihovna. ZadruhΘ zp∙sobφ to, ₧e knihovna je
automaticky p°ilinkovßna k Programu tzn., ₧e budete moci pou₧φvat exporty
Knihovny v Programu.
Poznßmka: Makro AFX_EXT_CLASS m∙₧ete vyu₧φt i p°i exportu funkcφ. Zkrßtka vlo₧te makro vlo₧te bu∩ p°ed funkci nebo mezi nßvratovou hodnotu a jmΘno funkce, tφm se stßvß funkce viditelnß pro okolnφ projekty. Dejte si ale pozor, abyste vlo₧ili hlaviΦkov² soubor funkce do projektu, kde ji chcete pou₧φt. V²Üe uvedenΘ makro se u₧ postarß, aby funkce byla importovßna. Makro vyu₧φvß konstanty, kterΘ jsou definovßny pouze v rozÜφ°enΘ knihovn∞. Z toho plyne, ₧e nejde pou₧φt v b∞₧nΘ DLL.
P°φklad k tΘto lekci si m∙₧ete stßhnout v sekci Downloads. Mo₧nß na vßs tento p°φklad bude p°esp°φliÜ slo₧it², proto₧e jsme jeÜt∞ ned∞lali dialogy apod., ale to hlavnφ tam jist∞ najdete. D∞kujeme za pozornost a u dalÜφho dφlu se t∞Üφme nashledanou.© 2001 Vogel Publishing, design by ET NETERA
|