Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
76
3.pierwSzeokno
mb->Append(mFile,wxT("Plik"));
mb->Append(mHelp,wxT("Pomoc"));
this->SetMenuBar(mb);
Prawda,żejestbardzoprzejrzystyiintuicyjny?ZapomocąmetodyAppend()dodajemynajpierw
odpowiedniepozycjedomenuPlikreprezentowanegoprzezobiektmFile.Następniepowtarzamyto
samodlamenuPomocreprezentowanegoprzezobiektmHelp.Pamiętaszzapewne,żeobiektymFile
imHelpobiektamiklasywxMenu.WtymprzypadkumetodaAppend()klasywxMenujakoargument
przyjmujewskaźnikdopozycjimenu.NowościąjesttufunkcjaAppendSeparator(),którawstawiado
menupoziomyseparator.Wszystkiemetodywstawiającenoweelementydomenuzwracająwskaźnik
donowegoelementu,któryjestypuwxMenuItem.
KlasawxMenuBar,którejobiektemjestnaszpasekmenu,równieżzawierametodęAppend(),
leczwtymprzypadkuprzyjmujeonadwaargumenty:wskaźnikdoobiektuklasywxMenuoraztekst,
jakizostaniewyświetlonynapaskumenudladanejpozycji.Wtensposóbdopaskamenumbzostały
dodanepozycjePlikorazPomoc.
Nakoniecpasekmenuzostałdodanydooknaprogramuzapomocąfunkcjivoid
SetMenuBar(wxMenuBar*mb).Jeśliskojarzyłeś,żeodbyłosiętobardzopodobniejakwprzypadku
paskastanu,maszzupełnąrację.
Skompilujprogram.Powinieneśotrzymaćokno(rys.3.4)wyposażonewładnypasekmenu.
Rysunek3.4.PasekmenuwsystemieMSWindowsotrzymanyposkompilowaniuprzykładowegokoduzrozdziału3.
Zwróćuwagęnatekstpomocywyświetlanywpaskustanuponajechaniukursoremmyszynaposzczególneelementy
menu,stylwxITEM–CHECKzastosowanydlapozycjinPokażdatę”,atakżenaseparatorznajdującysięnadpozycją
nZamknijprogram”dodanydomenuzapomocąmetodyAppendSeparator().Wszystkotozostałozrealizowaneza
pomocąkilkuliniikodu
Zanimprzejdziemydalejizajmiemysięobsługązdarzeńpochodzącychznaszegomenu,pokażę
Ci,jakmożnauprościćtworzeniemenu.
3.4.2.
SprytneodmianyfunkcjiAppend()
Sposóbrealizacjimenu,zjakimzapoznałemCięwpoprzednimpunkcie,niejestjedynądrogądo
efektywnegobudowaniawydajnychmenu.Prawdęmówiąc,zpunktuwidzeniastrukturyklasbyłto
sposóbnajbardziejpodstawowy,ajednocześnienajbardziejformalnyiwwielupraktycznychprzy-
padkachzbytzłożony.
Naszeprostemenumożnazrealizowaćnakilkainnychsposobów,adokonamytegodziękispryt-
nymodmianomfunkcjiAppend(),jakiemaklasawxMenu.
Wróćmyzatemdonaszegokodu.Pierwsząmyślą,jakasięnasuwapojegoanalizie,jestmożliwość
pominięciadefinicjiideklaracjipozycjimenubędącychobiektamiwxMenuItemiumieszczenieich