... masz przeżywać życie, a nie je opisywać.
Untitled • SlatutMoute Ffc Edt ';iew tjtlp 'D|e?lMl ••I -l -Q Rysunek 14.11. Efekt dodania separatora za panelem Mouse Position O Nowy panel separatora Prawdopodobnie jednak bêdziemy chcieli zmieniæ pocz¹tkowy domyœlny rozmiar se- paratora, a tak¿e jego wygl¹d, co opisane jest w nastêpnym podrozdziale. fl\\K£ l AIY.I: « Wiêcej na temat funkcji obs³ugi interfejsu u¿ytkownika w menu dowiesz siê z rozdzia³u 13. • Wyjaœnieñ dotycz¹cych tablic ³añcuchów szukaj w rozdziale 2. Dynamiczne zmiany wymiarów, stylu i tekstu w panelach Klasa cstatusBar posiada kilka funkcji umo¿liwiaj¹cych zmianê wymiarów, stylu oraz tekstu elementów paska stanu. Funkcjami tymi s¹ SetPaneinfo (), SetPaneStyle () oraz SetPaneText(). Ka¿da funkcja identyfikuje panel na podstawie indeksu pozycji w tablicy indykatorów (przekazanej do Setindicators ()). Nie zawsze najlepszym wyjœciem jest bezpoœrednie u¿ycie tego indeksu, poniewa¿ kod mo¿e ulec zmianie, gdy wprowadzimy do paska stanu kolejne indykatory (istniej¹ce indeksy ulegn¹ wówczas zmianie). Z pomoc¹ w takiej sytuacji przychodzi nam funkcja sk³adowa CommandTolndex (), zwracaj¹ca indeks indykatora na podstawie przekazanego jej, jako jedyny parametr, identyfikatora. Przyk³adowo, poni¿sza linia przypisuje l do zmiennej nindex po wyjœciu z funkcji CommandTolndex () (u¿ywaj¹c tablicy indicators podanej wczeœniej). int nldnex m_wnd3tatusBar.CommandTolndex(ID_INDICATOR_MOUSE) ; Teraz mo¿emy ju¿ umieszczaæ nowe panele przed ID_INDICATOR_MOUSE, gdy¿ wartoœæ indeksu bêdzie siê zmienia³a odzwierciedlaj¹c aktualn¹ pozycjê identyfikatora, który mo¿emy w dalszej kolejnoœci przekazywaæ funkcjom SetPane... (). Funkcja SetPaneText () pobiera jako pierwszy parametr indeks pozycji, której tekst wyœwietlany na pasku ma ulec zmianie. Drugim parametrem jest wskaŸnik ³añcucha lub obiektu cstring, w którym znajduje siê nowy tekst. Trzecim opcjonalnym parametrem jest wartoœæ Boolean. Wartoœæ ta decyduje, czy nowy tekst ma pojawiæ siê na pasku bezzw³ocznie (TRUE), czy po kolejnym odœwie¿eniu okna (FALSE). Model linii zmieniaj¹cej tekst przydzielony identyfikatorowi wygl¹da nastêpuj¹co: m_wnd3tatusBar.SetPaneText(nindex , "My New Pane Text") ; Koresponduj¹ca funkcja GetPaneText () zwraca zmienn¹ cstring. Przechowywany w niej jest tekst aktualnie u¿ywany przez panel, którego indeks podany jest funkcji jako parametr. Styl panelu indykatora zmienia siê za pomoc¹ funkcji SetPaneStyle () i przekazuj¹c jej jak drugi parametr znacznik stylu spoœród wymienionych w tabeli 14.5. Pierwszym parametrem jest oczywiœcie indeks panelu, którego dotyczy dzia³anie funkcji. Przyk³adowo, aby panel Mouse Position sta³ siê wypuk³y nale¿y dodaæ nastêpuj¹cy kod: int nindex = CommandTolndex(ID_INDICATOR_MOUSE) ; m_wndStatusBar.SetPaneStyle(nindex, SBPS_POPOUT) ; 350_____________________________________Poznaj Visual C++ 6 Tabela 14.5. Znaczniki stylu paneli indykatorów paska stanu Znacznik Opis SBPS_NORMAL panel jest „odciœniêty" w pasku stanu SBPS_POPOUT panel jest p³aski SBPS_DISABLED Tekst indykatora nie jest wyœwietlany SBPS_STRETCH Rozci¹gniêcie panelu w taki sposób, aby wype³ni³ pozosta³¹ czêœæ paska stanu (tylko jeden panel mo¿e posiadaæ ten znacznik) SBPS_NOBORDERS Wokó³ panelu nie pojawi siê trójwymiarowa ramka Koresponduj¹ca funkcja GetPaneStyle () zwraca wartoœæ typu UINT, przechowuj¹c¹ bie¿¹cy znacznik stylu panelu identyfikowanego przez przekazany indeks. Dziêki funkcji SetPaneinfoO za jednym zamachem mo¿emy zmieniæ identyfikator, styl oraz szerokoœæ panelu. Pierwszym parametrem jest, jak zwykle, indeks pozycji panelu. Jako drugi parametr mo¿emy podaæ nowy identyfikator indykatora (lub istniej¹cy, by go zachowaæ). Trzecim parametrem jest znacznik stylu, który mo¿emy wybraæ z tabeli 14.5. Czwarty parametr wreszcie, umo¿liwia zmianê domyœlnej szerokoœci panelu poprzez podanie wartoœci ca³kowitoliczbowej, okreœlaj¹cej now¹ szerokoœæ panelu w pikselach (parametr ten jest ignorowany jeœli wstawimy znacznik stylu SBPS_STRETCH). Na przyk³ad, by zmieniæ szerokoœæ panelu Mouse Position na 100 pikseli, musimy wpisaæ poni¿szy kod: int nlndex = CommandToIndex(ID_INDICATOR_MOUSE) ; m_wndSatusBar.SetPaneInfo(nlndex,ID_INDICATOR_MOUSE, GetPaneStyle(), 100) ; Zauwa¿my, i¿ funkcja GetPaneinfo () u¿yta jest dla zachowania stylu przekazanego jako trzeci parametr funkcji SetPaneinfo (). Listing 14