13.07.2015 Views

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

Untitled - Vitajte na stránkach www.einsty.hostujem.sk

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

P R O G R A M U J E M EJeho typ Iko<strong>na</strong> OpisMB_OK - zobrazí sa len tlaèidlo OKMB_OKCANCEL - zobrazia sa tlaèidlá OK a CancelMB_RETRYCANCEL - zobrazia sa tlaèidlá Retry a CancelMB_YESNO - zobrazia sa tlaèidlá Yes a NoMB_YESNOCANCEL - zobrazia sa tlaèidlá Yes, No a CancelMB_ABORTRETRYIGNORE - zobrazia sa tlaèidlá Abort, Retry a IgnoreMB_APPLMODAL - nebudete môc pracova s aplikáciou, pokým informaèné oknonezavriete; môžete však pracova s inými aplikáciamiMB_SYSTEMMODAL - nebudete môc pracova so systémom ani s ïalšou aplikáciou,pokým nezavriete informaèné okno (informaèné okno zostávastále <strong>na</strong> obrazovke aj pri práci s inou aplikáciou)MB_TASKMODAL - podobné ako APPLMODAL, neúèinný v aplikácii, ktorá využíva MFCMB_DEFBUTTON1 - urèuje „Default Button“ v dialógu (teda ten, ktorý sa aktivujepo stlaèení enter); používa sa pri viactlaèidlových informaènýchoknách (<strong>na</strong>pr. MB_ABORTRETRYIGNORE); <strong>na</strong>stavuje prvétlaèidlo ako defaultMB_DEFBUTTON2 - Nastavuje druhé tlaèidlo ako defaultMB_DEFBUTTON3 - Nastavuje tretie tlaèidlo ako defaultMB_ICONASTERISKZobrazí ikonualebo MB_ICONINFORMATIONMB_ICONEXCLAMATIONZobrazí ikonualebo MB_ICONWARNINGMB_ICONQUESTIONZobrazí ikonuMB_ICONHAND alebo MB_ICONSTOPalebo MB_ICONERRORTab. 1Typy informaèných dialógovZobrazí ikonubudem vraca (<strong>sk</strong>úste si však <strong>na</strong> domácu úlohu prerobi funkciu CKontextView::OnLButtonDown tak, aby ste využívali objekt GDI systémového zásobníka).ZAÈÍNAME DIALÓGMI. Na zaèiatok si hádam ujasnime, èo to vlastne dialógje. Dialóg je okno ako každé iné, môže spracúva správy, môžeme s ním robi operácieako s každým iným oknom (zavrie , premiestni , zmeni ve¾kos ). V systéme Windowsexistujú dva druhy dialógov: modálne a nemodálne. Modálne dialógy sú bežnejšie.Tento typ dialógov neumožòuje používate¾ovi vykonáva ïalšiu èinnos v danej aplikácii,pokým ho neuzavrie (príkladom takýchto dialógov sú dialógy Open, Save as, ale ajtzv. informaèné dialógy, <strong>na</strong>pr. This program has performed an illegal operation...).Nemodálne dialógy, ako už istotne tušíte, sa líšia od modálnych v tom, že umožòujúïalšiu prácu s aplikáciou (<strong>na</strong>pr. dialóg Find vo Worde). Z h¾adi<strong>sk</strong>a knižnice MFC savšak tieto dva typy dialógov nijako zvláš nelíšia. Obidva majú základnú triedu CDialog,rozdiel je len v ich vytváraní a rušení. Teraz zaèneme s tým <strong>na</strong>jjednoduchším, èo námknižnica MFC ponúka, a síce budú to informaèné dialógy, i<strong>na</strong>k známe ako Messageboxy.VYTVÁRAME MESSAGEBOX. Použitie tohto typu modálnych dialógov si <strong>na</strong>jlepšieukážeme <strong>na</strong> príklade. Chceme, aby sa po stlaèení ¾avého tlaèidla myši zobrazil informaènýdialóg s nejakým textom a, samozrejme, s ikonkou. Pomocou AppWizardu sivytvorte novú aplikáciu s názvom Information. Typ aplikácie bude rov<strong>na</strong>ký, aký sme používalidoteraz, èiže zvo¾te Single Document Interface a ostatné parametre nechajte <strong>na</strong>default. Ak už máte vygenerovanú základnú kostru aplikácie, potom pomocou Class Wizardupridajte obsluhu správy WM_LBUTTONDOWN do triedy CInformationView. Terazzmeòte kód funkcie OnDraw v tejto triede takto:void CInformationView::OnDraw(CDC* pDC){pDC->TextOut(0, 0, “Stlac lave tlacidlo mysi <strong>na</strong> zobrazenie informacnehodialogu.”);}MB_DEFBUTTON2 | MB_ICONINFORMATION);MessageBox(“Môj prvý dialóg v prostredí Visual C++”, “Hurá!”,MB_ABORT-RETRYIGNORE |MB_SYSTEMMODAL | MB_DEFBUTTON3 | MB_ICONINFORMATION);MessageBox(“Môj prvý dialóg v prostredí Visual C++”, “Hurá!”,MB_YESNO| MB_DEFBUTTON2 |MB_ICONWARNING);Aby sme videli použitie funkcie MessageBox v praxi, dopíšte tento kód do funkcieOnLButtonDown v aplikácii Information.void CInformationView::OnLButtonDown(UINT nFlags, CPoint point){MessageBox(“Môj prvý dialóg v prostredí Visual C++”, “Hurá!”, MB_OK |MB_ICONINFORMATION);}Teraz sa po stlaèení ¾avého tlaèidla myši v okne aplikácie zobrazí informaèný dialóg,ako vidíte <strong>na</strong> obr. 1. Pohrajte sa trochu s týmto jedným riadkom, zmeòte parametre funkciepod¾a tabu¾ky, vy<strong>sk</strong>úšajte rôzne kombinácie. To¾ko o dialógoch v tejto èasti, <strong>na</strong>budúce sapozrieme <strong>na</strong> klasické modálne dialógy so všetkým, èo k nim patrí, vrátane mechanizmuvýmeny údajov medzi ovládacími prvkami a premennými v programe a práce s editoromzdrojov.FAQ. V tejto „podèasti“ seriálu C++ pod Windows dávam priestor vám èitate¾om, abyste kládli otázky o programovaní vo Visual C++, <strong>na</strong> ktoré sa pokúsim odpoveda . V tejtoèasti uverejòujem dve otázky, ktoré mi prišli ešte v zaèiatkoch seriálu:Q: Nejde mi <strong>sk</strong>ompilova /zlinkova program Hello z druhej èasti seriálu.A: Tu je návod, ako postupova pri zostavovaní projektu Hello world z druhej èastiseriálu: Ak máte spustené Visual C++, z menu File vyberte New. Kliknite <strong>na</strong> záložkuProjects a vyberte Win32 Application.Do políèka Project Name zadajte Hello.Kliknite <strong>na</strong> OK. Objaví sa vám ïalší dialóg,<strong>na</strong> ktorom zvo¾te: An EmptyProject a kliknite <strong>na</strong> Finish. Potom savám zobrazia informácie o novom projekte.Opä kliknite <strong>na</strong> OK. Potom zmenu Project vyberte Add Tto Project apotom Files. Nájdite súbor, ktorý obsahujezdrojový text programu a vyberteAdd. Ak ešte nemáte <strong>na</strong>písaný zdrojový text, z menu Add To Project vyberte New apotom pod záložkou Files vyberte: C++ Source File. Na tom istom dialógu do políèkaFile <strong>na</strong>me vpíšte: hello.c. Je dôležité, aby prípo<strong>na</strong> súboru bola *.c, a nie *.cpp. Potom<strong>na</strong>píšte zdrojový kód do tohto súboru. Projekt zostavte.Q: Nejde mi <strong>sk</strong>ompilova /zlinkova program First zo štvrtej èasti seriálu, prièom mi hlásinejaký problém s knižnicou <strong>na</strong>fxcwd.lib.A: Postup pri vytváraní nového projektu je podobný ako pri programe Hello (pozri predchádzajúcuodpoveï). Tu však ešte treba zvoli podporu pre knižnicu MFC v danom projekte.Z menu Project vyberte Settings. V zoz<strong>na</strong>me Microsoft Fundation Classes vyberte<strong>na</strong>miesto Not Using MFC: Use MFC in a Shared DLL alebo Use MFC in a Static Library. Projekt<strong>na</strong>novo <strong>sk</strong>ompilujte a zlinkujte (Rebuild All).TIPY NA DOMA. Väèšinu tipov <strong>na</strong> doma nájdete v predchádzajúcom texte. Natomto mieste vám len pripomeniem, aby ste nezabudli experimentova (<strong>na</strong>pr. s funkciouMessageBox), lebo len samotným èítaním bez programovania sa ïaleko nedostanete.NABUDÚCE. O mesiac zaèneme <strong>na</strong>plno pracova s dialógmi, vytvoríme ve¾ký dialóg,ktorý bude obsahova väèšinu štandardných ovládacích prvkov, ktoré sa dajú použiv dialógoch. Vysvetlíme si mechanizmy DDX a DDV, a ak nám ostane priestor, zaènemesa venova aj spoloèným ovládacím prvkom Windows (Windows Common Controls).Dovidenia o mesiac.Marek ŠamajObr. 1 Informaèný dialóg programuInformationTeraz už používate¾ bude vedie , èo s aplikáciou robi . A ako sa vlastne vyvolá zobrazenieinformaèného dialógu? Ve¾mi jednoducho: staèí zavola funkciu MessageBox, prièomjej parametre sú:MessageBox(„Text v informaènom okne“, „Titulok informaèného ok<strong>na</strong>“,Jeho typ);Tretí parameter Jeho typ môže <strong>na</strong>dobúda hodnoty, ako vidíte v tab. 1. Treba si uvedomi, že tieto parametre môžeme kombinova . Odde¾ujeme ich operátorom |. Všetky<strong>na</strong>sledujúce volania funkcie MessageBox sú správne:MessageBox(“Môj prvý dialóg v prostredí Visual C++”, “Hurá!”,MB_ABORT-RETRYIGNORE |4/2001 PC REVUE 109

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!