12.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
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

P R O G R A M U J E M Epanela nástrojov vidíte prázdnepolíèko. Trochu ho myšou posuòtedoprava, aby bolo optickyoddelené od predchádzajúcich.Pomocou editora doò vpíšte M(po kliknutí <strong>na</strong> toto tlaèidlo toolbarusa zobrazí dialóg <strong>na</strong> zadanie Obr. 8 ToolTip pri tlaèidlách panela nástrojovMe<strong>na</strong>). Ved¾a tohto tlaèidla saobjavilo ïalšie prázdne a doò vpíšte P. Ak dvakrát kliknete <strong>na</strong> niektoré tlaèidlo panelanástrojov (ešte stále sa, samozrejme, <strong>na</strong>chádzame v editori), zobrazia sa jeho vlastnosti.Do políèka ID vpíšte rov<strong>na</strong>ké ID ako v prípade položiek menu (pre tlaèidlo M bude ID:ID_GUI_DIALGY_MENO a pre tlaèidlo P bude ID: ID_GUI_DIALGY_PRIEZVISKO). Ako somv úvode spomí<strong>na</strong>l, aplikaèný systém smeruje príkazové správy z menu a panela nástrojovrov<strong>na</strong>kým spôsobom (smerom), a preto môžeme použi rov<strong>na</strong>ké obslužné funkcie, èov tomto prípade zabezpeèíme rov<strong>na</strong>kým ID. Tým, že sme zvolili rov<strong>na</strong>ké ID, aj nápoveï vstavovom riadku bude rov<strong>na</strong>ká a už ju nemusíme zbytoène prepisova . Pre panel nástrojovexistuje ešte takzvaná ToolTip nápoveï (ak sa myšou zastavíte <strong>na</strong>d niektorým tlaèidlomToolBaru, zobrazí sa zvyèajne žltý pravouholník s textom, ktorý objasòuje funkciutlaèidla). Túto „funkènos “ pridáte jednoducho tak, že vo vlastnostiach tlaèidla do po¾aPrompt pridáte za nápoveï, ktorá sa zobrazuje v stavovom riadku, z<strong>na</strong>k nového riadka\n a za ním text ToolTipu (obr. 8). V <strong>na</strong>šom príklade pre tlaèidlo M pridajte ToolTip:Dialóg meno a pre tlaèidlo P zase Dialóg priezvi<strong>sk</strong>o. Kontrolná otázka: Myslíte si, že sazmenil Prompt aj vo vlastnostiach položiek Menu? Skúste <strong>na</strong>jprv odpoveda a až potomsa pozrie .Krok 3 – úprava StatusBaru: Dostali sme sa do predposlednej fázy úpravy projektu GUI.V nej spojíme dialógy pre zadanie me<strong>na</strong> a priezvi<strong>sk</strong>a so stavovým riadkom, <strong>na</strong> ktoromzobrazíme text zadaný v týchto dialógoch. Stavový riadok je definovaný v súboreMainFrm.cpp v statickom poli indicators. V <strong>na</strong>šom prípade definíciu predstavuje kód:static UINT indicators[] ={ID_SEPARATOR,ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,};// status line indicatorIndikátory CAPS, NUM a SCRL sa aktivujú, keï stlaèíme príslušný kláves (ak ste sa stým ešte nestretli, spus te aplikáciu GUI a vy<strong>sk</strong>úšajte si to). Pre <strong>na</strong>še potreby nám budústaèi len dve „prázdne“ miesta v stavovom riadku, prièom v prvom (má index 0 a jev¾avo) sa bude zobrazova text z dialógu Meno a v druhom text z dialógu Priezvi<strong>sk</strong>o.Zmeòte preto definíciu stavového riadka takto:static UINT indicators[] ={ID_SEPARATOR,ID_SEPARATOR,};Pomocou ClassWizardu pridajte textovým poliam v dialógoch premenné, ako vidíte vtab. 1.Teraz už len pridajte tento riadok do funkcie OnGuiDialgyMeno:m_wndStatusBar.SetPaneText(0, dlgM.m_strMeno);a do funkcie OnGuiDialgyPriezvi<strong>sk</strong>o:m_wndStatusBar.SetPaneText(1, dlgP.m_strPriezvi<strong>sk</strong>o);Samozrejme, že tento kód musíte prida až za volanie funkcie DoModal. Premennám_wndStatusBar je deklarovaná v hlavièkovom súbore triedy CMainFrame ako premennátypu stavový riadok (CStatusBar m_wndStatusBar). To je všetko, po spustení aplikáciesa bude zobrazova v ¾avej èasti StatusBaru meno a v pravej priezvi<strong>sk</strong>o. Ako však uvidíte,tieto dva panely StatusBaru nie sú ve¾mi esteticky usporiadané. ¼avý je akýsi vypuklý aväèší ako pravý. To hneï <strong>na</strong>pravíme. Pridajte tieto dva riadky do súboru MainFrm.cpp niekdeku koncu funkcie OnCreate:m_wndStatusBar.SetPaneInfo(0, 0, 0, 300);m_wndStatusBar.SetPaneInfo(1, 0, 0, 300);ID ovládacieho prvku Èlen<strong>sk</strong>á premenná Typ Max. dåžkaIDC_MENO m_strMeno CString 10IDC_PRIEZVISKO m_strPriezvi<strong>sk</strong>o CString 15Tab. 1 Èlen<strong>sk</strong>é premenné dialógovTým sme <strong>na</strong>stavili rov<strong>na</strong>ký vzh¾ad a rozmery pre oba panely stavového riadka (viac ofunkciách stavového riadka sa doèítate v helpe).Krok 4 – pridanie plávajúceho pop-up menu: Ako som písal <strong>na</strong> zaèiatku, trieda CMenumá v sebe obsiahnutú podporu aj pre takýto typ menu (štandardne sa toto menupoužíva, ak kliknete pravým tlaèidlom myši do klient<strong>sk</strong>ej oblasti ok<strong>na</strong>). Pomocou editorazdrojov vložte nový zdroj menu do projektu (postupujte rov<strong>na</strong>ko ako pri vkladaní novéhodialógu). Nový zdroj <strong>na</strong>zvite IDR_MYMENU. Jeho položky vyplòte pod¾a obr. 9. Keïže ajtu platí rov<strong>na</strong>ké smerovanie príkazových správ ako v klasickom menu a ToolBare, IDpoložiek Meno a Priezvi<strong>sk</strong>o zvo¾te rov<strong>na</strong>ké ako v predchádzajúcom prípade. „Odde-¾ovaè“ (Separator, horizontál<strong>na</strong> èiara) vložíte do menu tak, že pri vkladaní novej položkymenu zaškrtnete vlastnos Separator <strong>na</strong> karte General (do po¾a Caption nemusíte niè vpisova). Pre položku About... <strong>na</strong>píšte jej ID: ID_APP_ABOUT, èo je opä rov<strong>na</strong>ké ako v prípadeklasického menu pre položku Help -> About GUI... Teraz pomocou ClassWizardupridajte zdroj IDR_MYMENU do už existujúcej triedy CMainFrame a pridajte obsluhusprávy WM_CONTEXMENU takisto do triedy CMainFrame. Kód jej obslužnej funkciezmeòte takto:void CMainFrame::OnContextMenu(CWnd* pWnd, CPoint point){CMenu MyMenu;MyMenu.LoadMenu(IDR_MYMENU);MyMenu.GetSubMenu(0)->TrackPopupMenu(TPM_CENTERALIGN | TPM_RIGHT-BUTTON, point.x, point.y, this);}Opis parametrov nosnej funkcie TrackPopupMenu nájdete v helpe. Výsledné menuvidíte <strong>na</strong> obr. 10.TIPY NA DOMA. Prepíšteaplikáciu GUI tak, aby dialógy <strong>na</strong>zadanie me<strong>na</strong> aj priezvi<strong>sk</strong>a bolinemodálne. Keï ich takto zmeníte,doprogramujte aj zaškrtnutietej položky menu, ktorej dialógbol vyvolaný. Zaškrtnutie sa robí<strong>na</strong>mapovaním správy UPDATE_COMMAND_UI pri položkách menu. V tele tejto funkciesa potom zaškrtnutie robí pomocou funkcie CCmdUI::SetCheck (podrobnejšie vhelpe). Existujú aj ïalšie funkcie, <strong>na</strong>príklad CCmdUI::E<strong>na</strong>ble, ktorá dokáže sprístupni ,resp. zneprístupni položku v menu.Pozrite sa <strong>na</strong> tieto funkcie, v praxisa dos èasto využívajú. Už ne-Obr. 10 Plávajúce pop-upmenuzostal priestor <strong>na</strong> opísanie akcelerátorov(klávesových <strong>sk</strong>ratiek).Pozrite sa <strong>na</strong> prácu s nimi, je jednoduchéich používa a aj programova (vo väèšine prípadov si vystaèíte s editoromzdrojov). Naprogramujte akcelerátory do <strong>na</strong>šej aplikácie pre <strong>na</strong>mi pridané položkymenu. Opä platí použitie rov<strong>na</strong>kých ID. Upravte StatusBar tak, aby mal tri položky.V prvej (index 0) sa bude zobrazova help k položkám menu a tlaèidlám ToolBaru, vdruhej text z dialógu meno a v tretej text z dialógu priezvi<strong>sk</strong>o. Tým opravíte prepisovanietextu dialógu meno nápoveïou a inými informáciami, ktoré aplikácia zobrazuještandardne v prvej položke.NABUDÚCE. S¾ubovanú prácu s triedou dokumentu si odložíme do budúcej èasti.Dovidenia v novembri.Marek ŠamajObr. 9Položky plávajúcehomenu10/2001 PC REVUE 125

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

Saved successfully!

Ooh no, something went wrong!