Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
3.4.paSekmenu
wxMenuItem::wxMenuItem(
wxMenu*parentMenu=NULL,
intid=wxID_SEPARATOR,
constwxString&text=wxEmptyString,
constwxString&helpString=wxEmptyString,
wxItemKindkind=wxITEM_NORMAL,
wxMenu*subMenu=NULL
)
Konstruktortenmożnaprzedstawićwformiełatwegodozapamiętaniaschematu:
75
wxMenuItem(menu_rodzic,identyfikator,tekstwyświetlany,tekstpomocy,rodzaj,submenu);
Menubędącerodzicemdanejpozycjimożezostaćokreślonezapomocąwskaźnikadomenu,jeżeli
tenzostałwcześniejzadeklarowany.Zwyklejednakstosujesiętutajwartośćdomyślnąargumentu,
czyliNULL.Najważniejszymargumentemkonstruktorajestnatomiastidentyfikator,któryjestuni-
kalnąwskalicałegoprogramuwartościącałkowitą.Towłaśniezapomocąidentyfikatoraprogram
jestinformowanyotym,któryelementmenu(lubinnyelementGUI)wywołałzdarzenie,czylina
przykładzostałkliknięty.Naraziewnaszymprzykładowymprogramiewszystkiepozycjemenunie
mająprzypisanychidentyfikatorów,ponieważwtejchwilizależynamnazbudowaniuipoprawnym
wyświetleniumenu.Obsługązdarzeńzajmiemysięwkolejnymrozdziale.
Kolejnymargumentemkonstruktorajesttekstwyświetlanywmenudladanejpozycji.Wnaszym
przykładziepierwszazdefiniowanapozycjamenubędziewyświetlanajakonPokażdatę”.Zarazponim
znajdujesięargumentbędącytekstempomocywyświetlanymwpierwszympolupaskastanuponaje-
chaniukursoremmyszynawybranąpozycjęmenu.Zwróćuwagę,żewszystkietekstymenuzostały
ujętewmakrowxT.ZabiegtengwarantujepełnązgodnośćciągówznakówzestandardemUnicode,
atakżepoprawnąichinterpretacjęwróżnychsystemachoperacyjnych(wrzeczywistościpowoduje
onoautomatycznąkonwersjęobjętychnimciągówznakowychdounikodowychciągówszerokich,
gdybibliotekazbudowanajestzUnicode).Jeżelichceszbudowaćprogramywieloplatformowe,włącz
doswoichnawykówtakisposóbzapisuciągówznaków9.
Rodzajpozycjimenu,któryjestokreślanywartościątypuwyliczeniowegowxItemKind,tosposób
prezentacjiizachowaniadanejpozycji.Zwyklenadajemusięjednąznastępującychwartości:
wxITEM_NORMAL-normalnapozycjamenu;
wxITEM_RADIO-pozycjadziałającajakprzycisktypuradio,czyliprzełącznik;
wxITEM_CHECK-pozycjadziałającajakwłączniktypucheckbox,mogącaprzyjąćjedną
zdwóchwartości;
wxITEM_DROPDOWN-szczególnyrodzajpozycjimenuzestrzałkąumożliwiającąrozwija-
niedodatkowegomenu.
Pozostałestylepozycjimenu,októrychmożeszprzeczytaćwdokumentacjibiblioteki,bardzo
rzadkostosowaneiniebędziemysięnimizajmować.
Ostatnimargumentemkonstruktorajestwskaźnikdomenupodrzędnego.
Poraokreślićstrukturęnaszegomenu.Poniżejdodanychostatniodefinicjielementówmenu,
aprzedutworzeniempaskastanuwpisztakikod:
mFile->Append(mShowDateTime);
mFile->Append(mShowSystemVersion);
mFile->AppendSeparator();
mFile->Append(mClose);
mHelp->Append(mAboutProgram);
9
Gdydokończymybudowęmenu,spróbujprzeprowadzićeksperymentiusunąćmakrowxTzkodu.Mimopopraw-
nejkompilacjiaplikacjiwMSWindowsiLinux,zapewnespowodujetoróżneproblemyzwyświetlaniemprogramu,
np.wUbuntuorazMintmogązniknąćniektóretekstypozycjimenu,asamstartprogramubędziedodatkowookraszony
oknamiinformacjiowyjątkach.