Megosztás a következőn keresztül:


Állapotsávok (Windows-vezérlők)

A állapotsor egy vízszintes ablak a szülőablak alján, amelyben az alkalmazás különféle állapotinformációkat jeleníthet meg. Az állapotsor több információtípus megjelenítéséhez részekre osztható. Az alábbi képernyőképen a Microsoft Windows Paint alkalmazás állapotsora látható. Ebben az esetben az állapotsor a "Súgó, kattintson a Súgó menü súgótémakörökre" szövegét tartalmazza. Az állapotsor az ablak alján található terület, amely súgószöveget és koordináta-információkat tartalmaz.

festőalkalmazás képernyőképe egy állapotsoron, amely tippeket tartalmaz az online súgóról

Ez a szakasz az alábbi témaköröket tartalmazza.

Típusok és stílusok

Az állapotsor alapértelmezett helye a szülőablak alján található, de megadhatja a CCS_TOP stílust, hogy az megjelenjen a szülőablak ügyfélterületének tetején.

Megadhatja a SBARS_SIZEGRIP stílust, amely az állapotsor jobb végén lévő méretezési fogót tartalmazza.

Jegyzet

A CCS_TOP és SBARS_SIZEGRIP stílusok kombinálása nem ajánlott, mert az eredményként kapott méretezési fogás nem működik.

 

Méret és magasság

Az állapotsor ablakműködtetése automatikusan beállítja az ablak kezdeti méretét és pozícióját, figyelmen kívül hagyva a CreateWindowEx függvényben megadott értékeket. A szélesség megegyezik a szülőablak ügyfélterületének szélességével. A magasság az állapotsor eszközkörnyezetében jelenleg kiválasztott betűtípus metrikáin és az ablak szegélyeinek szélességén alapul.

Az ablakművelet automatikusan módosítja az állapotsor méretét, amikor WM_SIZE üzenetet kap. Amikor a szülőablak mérete megváltozik, a szülő általában WM_SIZE üzenetet küld az állapotsornak.

Egy alkalmazás beállíthatja az állapotsor rajzterületének minimális magasságát úgy, hogy az ablaknak elküld egy SB_SETMINHEIGHT üzenetet, amely képpontban adja meg a minimális magasságot. A rajzterület nem tartalmazza az ablak szegélyeit. A minimális magasság hasznos lehet a tulajdonos által rajzolt állapotsoron való rajzoláshoz. További információ: Owner-Drawn Állapotsávok a fejezet későbbi részében.

Az állapotsor szegélyeinek szélességét az ablak SB_GETBORDERS üzenet küldésével kérdezheti le. Az üzenet egy háromelemű tömb címét tartalmazza, amely megkapja a szélességeket.

Multiple-Part állapotsávok

Az állapotsorok számos különböző részből állnak, amelyek mindegyike eltérő szövegsort jelenít meg. Az állapotsorokat részekre osztja úgy, hogy elküld egy SB_SETPARTS üzenetet az ablaknak, megadva a létrehozandó részek számát és egy egész számtömb címét. A tömb minden részhez egy elemet tartalmaz, és minden elem meghatározza az adott rész jobb szélének ügyfélkoordinátát.

Az állapotsor legfeljebb 256 részből áll, bár az alkalmazások általában ennél sokkal kevesebbet használnak. Az állapotsor részeinek számát, valamint az egyes részek jobb szélének koordinátáját az ablak SB_GETPARTS üzenet küldésével kérdezheti le.

Állapotsor szövegművelete

Az állapotsor bármely részének szövegét úgy állíthatja be, hogy elküldi a SB_SETTEXT üzenetet, megadja egy rész nulla alapú indexét, a sztring azon címét, amelyet az adott részbe szeretne rajzolni, valamint a sztring megrajzolásának technikáját. A rajztechnika meghatározza, hogy a szöveg rendelkezik-e szegélyrel, és ha igen, akkor a szegély stílusával. Azt is meghatározza, hogy a szülőablak felelős-e a szöveg megrajzolásáért. További információt az alábbi Owner-Drawn állapotsávok szakaszban talál.

Alapértelmezés szerint a szöveg balra van igazítva az állapotsor megadott részén belül. A szövegbe tabulátorkarakterek (\ t) ágyazhatók be középre vagy jobbra igazításhoz. Az egyetlen tabulátor karakterétől jobbra lévő szöveg középre van igazítva, a második tabulátor karakterétől jobbra lévő szöveg pedig jobbra van igazítva.

Ha egy állapotsorból szeretne szöveget lekérni, használja a SB_GETTEXTLENGTH és SB_GETTEXT üzeneteket.

Ha az alkalmazás olyan állapotsort használ, amely csak egy részből áll, a WM_SETTEXT, WM_GETTEXTés WM_GETTEXTLENGTH üzeneteket használhatja a szövegműveletek végrehajtásához. Ezek az üzenetek csak azzal a résztel foglalkoznak, amelynek indexe nulla, így az állapotsort ugyanúgy kezelheti, mint egy statikus szövegvezérlőt.

Ha állapotsor létrehozása nélkül szeretne megjeleníteni egy állapotsort, használja a DrawStatusText függvényt. A függvény ugyanazokat a technikákat használja az állapot rajzolásához, mint az állapotsor ablakának eljárása, de nem állítja be automatikusan az állapotinformáció méretét és pozícióját. A függvény meghívásakor meg kell adnia az állapotinformáció méretét és pozícióját, valamint annak az ablaknak az eszközkörnyezetét, amelyben meg szeretné rajzolni.

Owner-Drawn állapotsávok

Az állapotsor egyes részeit megadhatja tulajdonos által rajzolt részeknek. Ezzel a technikával jobban szabályozhatja az ablakrész megjelenését, mint egyébként. Megjeleníthet például egy bitképet szöveg helyett, vagy más betűtípussal rajzolhat szöveget.

Ha tulajdonos által rajzoltként szeretne definiálni egy ablakrészt, küldje el az SB_SETTEXT üzenetet az állapotsorra, megadva az alkatrészt és a SBT_OWNERDRAW rajztechnikát. Ha SBT_OWNERDRAW van megadva, az lParam paraméter egy 32 bites alkalmazás által definiált érték, amelyet az alkalmazás használhat a rész rajzolásakor. Megadhat például egy betűfogópontot, egy bitképfogópontot, egy sztring címét stb.

Ha egy állapotsornak meg kell rajzolnia egy tulajdonos által rajzolt részt, a WM_DRAWITEM üzenetet küldi a szülőablakba. Az üzenet wParam paramétere az állapotsor gyermekablak-azonosítója, az lParam paraméter pedig egy DRAWITEMSTRUCT-struktúra címe. A szülőablak a szerkezet információi alapján rajzolja meg a részt. Az állapotsor tulajdonos által rajzolt részének DRAWITEMSTRUCT a következő információkat tartalmazza.

Tag Leírás
CtlType Meghatározatlan; ne használja.
CtlID Az állapotsor gyermekablak-azonosítója.
itemID A megrajzolandó rész nullaalapú indexe.
itemAction Meghatározatlan; ne használja.
itemState Meghatározatlan; ne használja.
hwndItem Az állapotsor kezelése.
hDC Kezelje az állapotsor eszközkörnyezetét.
rcItem A rajzolandó ablakrész koordinátái. A koordináták az állapotsor bal felső sarkához viszonyítva vannak.
itemData Az SB_SETTEXT üzenet lParam paraméterében megadott alkalmazás által definiált 32 bites érték.

 

Egyszerű üzemmód állapotsávjai

Az állapotsort "egyszerű módban" helyezheti el egy SB_SIMPLE üzenet elküldésével. Egy egyszerű mód állapotsávja csak egy részt jelenít meg. Ha az ablak szövege be van állítva, az ablak érvénytelen lesz, de csak a következő WM_PAINT. Az üzenetre való várakozás csökkenti a képernyő villogását azáltal, hogy minimalizálja az ablak újrafelfedezésének számát. Az egyszerű módú állapotsor akkor hasznos, ha a menüelemek súgószövegét jeleníti meg, miközben a felhasználó végiggörget a menün.

Az állapotsor egyszerű módban megjelenített sztringje a nem azonos módban megjelenő sztringektől elkülönítve marad. Ez azt jelenti, hogy az ablakot egyszerű módban helyezheti el, beállíthatja annak szövegét, és visszaválthat a nem egybesimuló módba anélkül, hogy a nem egybesimuló szöveg megváltozik.

Egy egyszerű módú állapotsor szövegének beállításakor a SBT_OWNERDRAW kivételével bármilyen rajztechnikát megadhat. Az egyszerű módú állapotsorok nem támogatják a tulajdonosi rajzot.

Alapértelmezett állapotsor üzenetfeldolgozása

Ez a szakasz az előre definiált STATUSCLASSNAME osztály ablakművelete által kezelt üzeneteket ismerteti.

Üzenet Alapértelmezett feldolgozás
WM_CREATE Inicializálja az állapotsort.
WM_DESTROY Felszabadítja az állapotsorhoz lefoglalt erőforrásokat.
WM_GETFONT A fogópontot az aktuális betűtípusra adja vissza, amellyel az állapotsor megrajzolja a szövegét.
WM_GETTEXT Másolja a szöveget az állapotsor első részéből egy pufferbe. Egy 32 bites értéket ad vissza, amely meghatározza a szöveg hosszát karakterekben, valamint a szöveg rajzolásához használt technikát.
WM_GETTEXTLENGTH Egy 32 bites értéket ad vissza, amely meghatározza az állapotsor első részén található szöveg hosszát karakterekben, valamint a szöveg rajzolásához használt technikát.
WM_NCHITTEST A HTBOTTOMRIGHT értéket adja vissza, ha az egérmutató a méretezési markolatban van, így a rendszer megjeleníti a méretezési kurzort. Ha az egérmutató nincs a méretezési fogásban, az állapotsor átadja ezt az üzenetet a DefWindowProc függvénynek.
WM_PAINT Az állapotsor érvénytelen régióját festi le. Ha a wParam paraméter nemNULL, akkor a vezérlő feltételezi, hogy az érték HDC, és az eszközkörnyezetet használó festékek.
WM_SETFONT Kiválasztja az állapotsor eszközkörnyezetében található betűtípus-leírót.
WM_SETTEXT Másolja a megadott szöveget az állapotsor első részére az alapértelmezett (nullaként megadott) rajzművelettel. Sikeres esetben IGAZ ad vissza, ellenkező esetben hamis .
WM_SIZE Átméretezi az állapotsort a szülőablak ügyfélterületének aktuális szélessége és az állapotsor aktuális betűtípusának magassága alapján.