Delen via


Statusbalken (Windows-besturingselementen)

Een statusbalk is een horizontaal venster onder aan een bovenliggend venster waarin een toepassing verschillende soorten statusinformatie kan weergeven. De statusbalk kan worden onderverdeeld in onderdelen om meer dan één type informatie weer te geven. In de volgende schermafbeelding ziet u de statusbalk in de Microsoft Windows Paint-toepassing. In dit geval bevat de statusbalk de tekst 'Klik op Help-onderwerpen in het Menu Help'. De statusbalk is het gebied onder aan het venster dat Help-tekst bevat en informatie coördineert.

schermafbeelding van de verftoepassing, met een statusbalk met hints over online help-

Deze sectie bevat de volgende onderwerpen.

Typen en stijlen

De standaardpositie van een statusbalk bevindt zich onderaan het bovenliggende venster, maar u kunt de CCS_TOP stijl opgeven om deze boven aan het clientgebied van het bovenliggende venster weer te geven.

U kunt de stijl SBARS_SIZEGRIP opgeven om een formaatgreep aan de rechterkant van de statusbalk op te nemen.

Notitie

Het combineren van de stijlen CCS_TOP en SBARS_SIZEGRIP wordt niet aanbevolen omdat de resulterende formaatgreep niet functioneel is.

 

Grootte en hoogte

Met de vensterprocedure voor de statusbalk wordt automatisch de oorspronkelijke grootte en positie van het venster ingesteld, waarbij de waarden worden genegeerd die zijn opgegeven in de functie CreateWindowEx. De breedte is hetzelfde als die van het clientgebied van het bovenliggende venster. De hoogte is gebaseerd op de metrische gegevens van het lettertype dat momenteel is geselecteerd in de apparaatcontext van de statusbalk en op de breedte van de randen van het venster.

De vensterprocedure past automatisch de grootte van de statusbalk aan wanneer er een WM_SIZE bericht wordt ontvangen. Wanneer de grootte van het bovenliggende venster verandert, verzendt het bovenliggende venster meestal een WM_SIZE bericht naar de statusbalk.

Een toepassing kan de minimale hoogte van het tekengebied van een statusbalk instellen door het venster een SB_SETMINHEIGHT bericht te verzenden, waarbij de minimale hoogte in pixels wordt opgegeven. Het tekengebied bevat de randen van het venster niet. Een minimale hoogte is handig voor het tekenen in een door de eigenaar getekende statusbalk. Zie Owner-Drawn statusbalken verderop in dit hoofdstuk voor meer informatie.

U haalt de breedte van de randen van een statusbalk op door het venster een SB_GETBORDERS bericht te verzenden. Het bericht bevat het adres van een matrix met drie elementen die de breedten ontvangt.

statusbalken Multiple-Part

Een statusbalk kan veel verschillende onderdelen bevatten, die elk een andere tekstregel weergeven. U deelt een statusbalk in delen door het venster een SB_SETPARTS bericht te verzenden, waarbij u het aantal onderdelen opgeeft dat moet worden gemaakt en het adres van een matrix met gehele getallen. De matrix bevat één element voor elk onderdeel en elk element specificeert de clientcoördinaat van de rechterrand van een onderdeel.

Een statusbalk kan maximaal 256 onderdelen bevatten, hoewel toepassingen doorgaans veel minder gebruiken dan dat. U haalt een telling van de onderdelen op een statusbalk op, evenals de coördinaat van de rechterrand van elk onderdeel, door het venster een SB_GETPARTS bericht te verzenden.

Tekstbewerkingen op de statusbalk

U stelt de tekst van een deel van een statusbalk in door het SB_SETTEXT bericht te verzenden, de op nul gebaseerde index van een onderdeel op te geven, een adres van de tekenreeks die in het deel moet worden getekend en de techniek voor het tekenen van de tekenreeks. De tekentechniek bepaalt of de tekst een rand heeft en, als dit het geval is, de stijl van de rand. Ook wordt bepaald of het bovenliggende venster verantwoordelijk is voor het tekenen van de tekst. Zie de sectie Owner-Drawn Statusbalken hieronder voor meer informatie.

Tekst wordt standaard links uitgelijnd binnen het opgegeven deel van een statusbalk. U kunt tabtekens (\ t) in de tekst insluiten om deze te centreren of rechts uit te lijnen. Tekst rechts van één tabteken is gecentreerd en tekst rechts van een tweede tabteken is rechts uitgelijnd.

Als u tekst wilt ophalen uit een statusbalk, gebruikt u de berichten SB_GETTEXTLENGTH en SB_GETTEXT.

Als uw toepassing gebruikmaakt van een statusbalk met slechts één deel, kunt u de WM_SETTEXT, WM_GETTEXTen WM_GETTEXTLENGTH berichten gebruiken om tekstbewerkingen uit te voeren. Deze berichten hebben alleen betrekking op het gedeelte met een index van nul, zodat u de statusbalk net als een statisch tekstbeheer kunt behandelen.

Als u een regel met status wilt weergeven zonder een statusbalk te maken, gebruikt u de functie DrawStatusText. De functie gebruikt dezelfde technieken om de status te tekenen als de vensterprocedure voor de statusbalk, maar hiermee wordt niet automatisch de grootte en positie van de statusinformatie ingesteld. Wanneer u de functie aanroept, moet u de grootte en positie van de statusgegevens opgeven, evenals de apparaatcontext van het venster waarin u deze wilt tekenen.

statusbalken Owner-Drawn

U kunt afzonderlijke onderdelen van een statusbalk definiëren als door de eigenaar getekende onderdelen. Door deze techniek te gebruiken, hebt u meer controle dan u anders zou hebben over het uiterlijk van het venstergedeelte. U kunt bijvoorbeeld een bitmap weergeven in plaats van tekst of tekst tekenen met een ander lettertype.

Als u een vensteronderdeel als eigenaar wilt definiëren, verzendt u het SB_SETTEXT bericht naar de statusbalk, waarbij u het deel en de SBT_OWNERDRAW tekentechniek opgeeft. Wanneer SBT_OWNERDRAW is opgegeven, is de parameter lParam een 32-bits toepassingsgedefinieerde waarde die de toepassing kan gebruiken bij het tekenen van het onderdeel. U kunt bijvoorbeeld een lettertypegreep, een bitmapgreep, een adres van een tekenreeks enzovoort opgeven.

Wanneer een statusbalk een door de eigenaar getekend onderdeel moet tekenen, wordt het WM_DRAWITEM bericht naar het bovenliggende venster verzonden. De parameter wParam van het bericht is de onderliggende venster-id van de statusbalk en de parameter lParam is het adres van een DRAWITEMSTRUCT- structuur. Het bovenliggende venster gebruikt de informatie in de structuur om het deel te tekenen. Voor een door de eigenaar getekend deel van een statusbalk bevat DRAWITEMSTRUCT- de volgende informatie.

Lid Beschrijving
CtlType- Ongedefinieerde; niet gebruiken.
CtlID- Onderliggende venster-id van de statusbalk.
itemID Op nul gebaseerde index van het deel dat moet worden getekend.
itemAction- Ongedefinieerde; niet gebruiken.
itemState Ongedefinieerde; niet gebruiken.
hwndItem- Greep naar de statusbalk.
hDC- Afhandelen naar de apparaatcontext van de statusbalk.
rcItem- Coördinaten van het vensterdeel dat moet worden getekend. De coördinaten zijn relatief ten opzichte van de linkerbovenhoek van de statusbalk.
itemData- Toepassingsgedefinieerde 32-bits waarde die is opgegeven in de parameter lParam van het SB_SETTEXT-bericht.

 

Statusbalken van eenvoudige modus

U plaatst een statusbalk in de 'eenvoudige modus' door het een SB_SIMPLE bericht te verzenden. Op een eenvoudige statusbalk in de modus wordt slechts één deel weergegeven. Wanneer de tekst van het venster is ingesteld, wordt het venster ongeldig gemaakt, maar wordt het pas opnieuw getekend tot de volgende WM_PAINT. Wachten op het bericht vermindert de flikkering van het scherm door het aantal keren dat het venster opnieuw wordt getekend te minimaliseren. Een eenvoudige statusbalk in de modus is handig voor het weergeven van Help-tekst voor menu-items terwijl de gebruiker door het menu schuift.

De tekenreeks die een statusbalk weergeeft terwijl deze zich in de eenvoudige modus bevindt, wordt afzonderlijk onderhouden van de tekenreeksen die in de niet-simplemodus worden weergegeven. Dit betekent dat u het venster in de eenvoudige modus kunt plaatsen, de tekst ervan kunt instellen en terug kunt gaan naar de niet-simple-modus zonder dat de tekst in de niet-simplemodus wordt gewijzigd.

Wanneer u de tekst van een eenvoudige statusbalk instelt, kunt u elke tekentechniek opgeven, behalve SBT_OWNERDRAW. Een eenvoudige statusbalk in de modus biedt geen ondersteuning voor het tekenen van eigenaars.

Standaardverwerking van statusbalkberichten

In deze sectie worden de berichten beschreven die worden verwerkt door de vensterprocedure voor de vooraf gedefinieerde STATUSCLASSNAME klasse.

Bericht Standaardverwerking
WM_CREATE Initialiseert de statusbalk.
WM_DESTROY Hiermee worden resources vrijgemaakt die zijn toegewezen voor de statusbalk.
WM_GETFONT Retourneert de ingang naar het huidige lettertype waarmee de statusbalk de tekst tekent.
WM_GETTEXT Kopieert de tekst van het eerste deel van een statusbalk naar een buffer. Het retourneert een 32-bits waarde die de lengte, in tekens, van de tekst en de techniek die wordt gebruikt om de tekst te tekenen, aangeeft.
WM_GETTEXTLENGTH Retourneert een 32-bits waarde die de lengte, in tekens, van de tekst in het eerste deel van een statusbalk aangeeft en de techniek die wordt gebruikt om de tekst te tekenen.
WM_NCHITTEST Retourneert de HTBOTTOMRIGHT-waarde als de muiscursor zich in de formaatgreep bevindt, waardoor het systeem de formaatcursor weergeeft. Als de muisaanwijzer zich niet in de formaatgreep bevindt, geeft de statusbalk dit bericht door aan de DefWindowProc-functie.
WM_PAINT Hiermee wordt de ongeldige regio van de statusbalk weergegeven. Als de parameter wParam niet-NULL-is, gaat het besturingselement ervan uit dat de waarde een HDC is en verft met behulp van die apparaatcontext.
WM_SETFONT Hiermee selecteert u de lettertypegreep in de apparaatcontext voor de statusbalk.
WM_SETTEXT Kopieert de opgegeven tekst naar het eerste deel van een statusbalk met behulp van de standaardtekeningbewerking (opgegeven als nul). Het retourneert TRUE indien geslaagd, of ONWAAR anders.
WM_SIZE Wijzigt de grootte van de statusbalk op basis van de huidige breedte van het clientgebied van het bovenliggende venster en de hoogte van het huidige lettertype van de statusbalk.