Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
72
3.pierwSzeokno
3.3.2.2.
Modyfikacjaliczbypólpaskastanu
Modyfikacjaliczbypólpaskastanuniejestpraktykązbytczęstą,conieznaczy,żewogóleniemożna
sięzniąspotkać.BibliotekawxWidgetsudostępniaprostąfunkcję,dziękiktórejnietylkomożna
wjednejchwilizmienićliczbępólpaskastanu,aletakżeodrazumożnaimnadaćwymaganąsze-
rokość.TafunkcjatovoidSetFieldsCount().Możeonaprzyjąćdwaargumenty,zktórychpierwszy
określanowąliczbępólpaskastanu.Drugimargumentem,domyślniemającymwartośćNULL,prze-
kazujemywskaźnikdokontenerazawierającegoinformacjeoszerokościposzczególnychpólpaska
stanu(analogiczniedofunkcjiSetStatusWidths(),októrejmowabyławyżej).
SposóbużyciaSetFieldsCount()możeszłatwowydedukować,analizującponiższykod:
wxStatusBar*sb=CreateStatusBar(2);
//Jakieśoperacje...
intsbwd[4]={150,-1,-2,70};
sb->SetFieldsCount(4,sbwd);
Najpierwzostajeutworzonypasekstanuzawierającydwapolajednakowejszerokości.Następnie,
powykonaniujakichśoperacji,tensampasekzyskujekolejnedwapola,adowszystkichzastoso-
wanenowewartościokreślająceichszerokość.
Zabawazłatwymwobsłudzepaskiemstanujestbardzodobrąwprawkąprzedpodjęciemkolej-
nychwyzwańwxWidgets,dlategozachęcamCiędoeksperymentowania.
3.3.3.
Zaawansowanetworzeniepaskastanu
Automatycznetworzeniepaskastanujestmetodąbardzowygodną,jednakprzyprojektowaniuireali-
zacjirozbudowanychaplikacjibardziejprzydatnemożesięokazaćręczne,wpełnikontrolowane,
samodzielnetworzeniepaskanarzędzi.Ostatecznieitakutworzonywtensposóbpasekjestprzypisy-
wanydooknaprogramu,awskaźnikdojegoobiektuzapisanywchronionympolum–frameStatusBar
klasywxFrame.Rozwiązanietopozwalajednaknabardziejczytelnąobsługępaskastanudziękiwyod-
rębnieniudodatkowego,własnegowskaźnikadojegoobiektu.Ponadtopozwalatonazastosowanie
dwuetapowejkonstrukcjipaskazużyciemfunkcjiCreate().
ZarównokonstruktorklasywxStatusBar,jakisłużącadwuetapowemutworzeniufunkcjaCreate()
przyjmująidentycznąlistęargumentów.Jednakwodróżnieniuodkonstruktora,któryniezwracażad-
nejwartości,funkcjaCreate()zwracawartośćbool,którąmożnanastępniewykorzystaćdojakichś
przydatnychoperacji,naprzykładdosprawdzeniastanutworzeniapaskaorazewentualnegozastoso-
waniawłasnejobsługiwyjątków.KonstruktorklasywxStatusBarwyglądatak:
wxStatusBar(
wxWindow*parent,
wxWindowIDid=wxID_ANY,
longstyle=wxSTB_DEFAULT_STYLE,
constwxString&name=wxStatusBarNameStr
)
Myślę,żeposzczególneelementykonstruktorajużCiznane,więcniebędęichopisywać.Jeśli
jednakmaszjeszczewątpliwościcodoznaczeniaposzczególnychargumentów,spróbujwrócićna
początektegorozdziałuiporównaćkonstruktorwxStatusBarzeszczegółowoomówionymtamkon-
struktoremwxFrame.Wprzypadkudalszychwątpliwościprzeczytajkonieczniepodrozdział5.2.
Stosowaniemanualnejmetodytworzeniapaskastanumasensjedyniewówczas,gdywskaźnik
doobiektupaskazostaniezadeklarowanywdefinicjiklasyoknaprogramu.Dziękitemuzyskujesz
możliwośćelastycznegopisaniaelementówklasyoknaprogramu,atakże,wprzypadkubardzorozbu-
dowanychaplikacjiwykorzystującychwieleokienopartychnawxFrame,możliwośćwykorzystania
jednegopaskastanuwróżnychoknachlubróżnychpaskówstanuwjednymoknie.Możliwościwydają
sięnieograniczone.
ZadeklarujwskaźnikdopaskajakoprywatnyskładnikklasyMyFrame.