Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
66
3.pierwSzeokno
-naszeoknoniemaokreślonegopołożenia,wxSize(600,400)-powyświetleniunaszeoknobędzie
miałorozmiary600pikseliszerokościna400pikseliwysokości.
Dlaczegooknogłównenaszegoprogramuniemazdefiniowanegopołożenia?Dlatego,żejest
topraktykabardzorzadkospotykana(oilewogóle).Zaumieszczenieoknaprogramuwewłaści-
wymmiejscu,którymzwyklejestśrodekekranu,odpowiadaznajdującasięwlinii33.,tj.wdefinicji
konstruktora,funkcjavoidCenterOnScreen(intDirection=wxBOTH).Zagadnieniateomówiłem
bardziejszczegółowowkolejnympodrozdziale.
Ważne!
ZapiszbieżącyprojektwxWidgetsiwykonajjegokopię.Będzietopunktwyjściowydo
naszychkolejnychrozważań,próbitestów.
Podsumowując,możemyopisaćprocesuruchamianiaaplikacjiwxWidgets,zamykającgowkilku
kluczowychpunktach,któreprzytoczęzatwórcamibiblioteki6:
nasamympoczątkudziałaniaaplikacjiwxWidgets,wzależnościodplatformy,wywoły-
wanedostarczaneprzezbibliotekę(nieprzezaplikację)funkcjamain(),WinMain()lubfunkcja
równoważna,przyczymwxWidgetsinicjujewewnętrznąstrukturędanychitworzyinstancję
obiektuMyApp;
wxWidgetswywołujemetodęMyApp::OnInit(),którazkoleitworzyinstancjęoknaMyFrame;
konstruktorMyFrametworzyzapomocąkonstruktoraklasywxFrameoknoprogramuidodaje
doniegoikonę,pasekmenuipasekstanu(otymbędziemowazachwilę);
funkcjaMyApp::OnInit()wyświetlaoknoizwracawartośćtrue;
uruchamianajestpętlazdarzeńwxWidgets,któraoczekujenawystąpieniezdarzeń,abyprzeka-
zaćjedoobsługi(obsłudzezdarzeńpoświęciłemkolejnyrozdział).
ProgramwxWidgetskończydziałaniewrazzzamknięciemgłównegookna(MyFrame).
3.2.
Szczegółygłównegooknaprogramu
Główneoknoprogramu,czyraczejjegoklasa,będziezazwyczajdziedziczyćodklasywxFrame.
Oznaczato,żemożeszmiećwpływnawszystkiecechyokna,jakiezostałyokreśloneprzezargumenty
konstruktoraklasywxFrame.DomyślnykonstruktorklasywxFrameprezentujesięnastępująco:
wxFrame::wxFrame(
wxWindow*parent,
wxWindowIDid,
constwxString&title,
constwxPoint&pos=wxDefaultPosition,
constwxSize&size=wxDefaultSize,
longstyle=wxDEFAULT_FRAME_STYLE,
constwxString&name=wxFrameNameStr
)
Wiem,napierwszyrzutokamożesięwydawaćprzerażający-mnierównieżkiedyśwystraszył.
Jednakbardzoszybkosięprzekonałem,żetenpozorniezagmatwanytwórwrzeczywistościmapro-
stąiprzyjaznąnaturę.Spróbujprzyjrzećsięposzczególnymargumentomkonstruktora.Jakzapewne
zauważyłeś,większośćznichmajużprzypisanedomyślnewartości,dozainicjowaniaobiektuklasy
wxFramewystarczyzatemwywołaniekonstruktorazawierającejedynietrzypierwszeargumenty.
Leczcooneoznaczająidoczegosłużą?
6
JulianSmart,KevinHock,StefanCsomor,Cross-PlatformGUIProgrammingwithwxWidgets,PearsonEduca-
tion,Inc.2006,str.23(tłum.autora).