Om statiska kontroller
Program använder ofta statiska kontroller för att märka andra kontroller eller för att separera en grupp kontroller. Även om statiska kontroller är så kallade barnfönster, kan de inte väljas. Därför kan de inte få tangentbordsfokus och kan inte ha ett tangentbordsgränssnitt. En statisk kontroll som har SS_NOTIFY-stil tar emot musinput och meddelar det överordnade fönstret när användaren klickar eller dubbelklickar på kontrollen. Statisk kontroll tillhör fönsterklassen STATIC.
Även om statiska kontroller kan användas i överlappande fönster, popup-fönster och underordnade fönster, är de utformade för användning i dialogrutor, där systemet standardiserar deras beteende. Genom att använda statiska kontroller utanför dialogrutor ökar en utvecklare risken för att programmet fungerar på ett sätt som inte är standard. Vanligtvis använder en utvecklare antingen statiska kontroller i dialogrutor eller använder SS_OWNERDRAW stil för att skapa anpassade statiska kontroller.
Följande avsnitt beskrivs i det här avsnittet.
Statiska kontrolltyper
Det finns fyra typer av statiska kontroller. Varje typ har en eller flera statiska kontrollstilar.
- Enkel Grafik Statisk Kontroll
- statisk textkontroll
- Statisk kontroll för avbildningar
- Owner-Drawn Statisk Kontroll
Enkel statisk grafikkontroll
En enkel statisk grafikkontroll visar en ram eller en fylld rektangel. En ram kan ritas i ett antal format, inklusive svart, grå eller vit. Dessutom kan en ram ritas med en etsad stil för att ge den ett tredimensionellt utseende. Bildruteformaten omfattar SS_BLACKFRAME, SS_GRAYFRAME, SS_WHITEFRAME, SS_ETCHEDHORZ, SS_ETCHEDVERT och SS_ETCHEDFRAME.
En rektangel kan fyllas med färg i någon av tre format: svart, grå eller vit. Dessa format definieras av konstanterna SS_BLACKRECT, SS_GRAYRECT och SS_WHITERECT.
Det går inte att kombinera grafikformaten.
Textstatisk kontroll
En statisk textkontroll visar text i en rektangel i ett av fem format:
- vänsterjusterad utan radbrytning
- vänsterjusterad med radbrytning
- centrerad
- högerjusterad
- enkel
Dessa format definieras av konstanterna SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT respektive SS_SIMPLE. Systemet ordnar om texten i dessa kontroller på fördefinierade sätt, förutom "enkel" text, som inte ordnas om.
Ett program kan när som helst ändra texten i en statisk textkontroll med hjälp av funktionen SetWindowText eller WM_SETTEXT-meddelandet.
Systemet visar så mycket text som möjligt i den statiska kontrollen och klipper det som inte passar. Om du vill beräkna en lämplig storlek för kontrollen hämtar du teckensnittsmåtten för texten. Mer information om teckensnitt och teckensnittsmått finns i Teckensnitt och Text.
Som standard kan fönstertexten för en statisk kontroll, liksom för andra kontroller, innehålla ett et-tecken som definierar följande tecken som genvägsnyckel för kontrollen (eller, om det gäller de flesta statiska kontroller, för kontrollen som den etiketterar, vilket är nästa kontroll i tabbordningen). Om du vill visa et-tecken i texten i stället för att använda dem för att definiera genvägar ska du ta med SS_NOPREFIX formatmallen.
Statisk bildkontroll
En statisk bildkontroll kan visa bitmappar, ikoner (inklusive animerade ikoner) eller förbättrade metafiler. Vilken typ av bild som en viss statisk kontroll visar beror på kontrollens stil: SS_BITMAP, SS_ICON eller SS_ENHMETAFILE. Ett program anger formatmallen när kontrollen skapas och anger även ett handtag till bitmappen, ikonen eller metafilen som kontrollen ska visa. När kontrollen har skapats kan ett program associera en annan bild med kontrollen genom att skicka ett STM_SETIMAGE meddelande och ange ett handtag till det nya grafiska objektet. Ett program kan hämta ett handtag till det grafiska objekt som för närvarande är associerat med en statisk kontroll genom att skicka ett STM_GETIMAGE meddelande. Ett program skickar meddelanden till en statisk kontroll med hjälp av funktionen SendDlgItemMessage.
Owner-Drawn Statisk Kontroll
Genom att använda stilen SS_OWNERDRAW kan en applikation ta ansvar för att måla en statisk kontroll. Det överordnade fönstret för en ägarritad statisk kontroll (dess ägare) tar emot ett WM_DRAWITEM meddelande när den statiska kontrollen behöver målas. Meddelandet pekar på en DRAWITEMSTRUCT struktur som innehåller information som ägarfönstret använder när kontrollen ritas.
Standardbearbetning av statisk kontrollmeddelande
Fönsterproceduren för den fördefinierade statiska kontrollfönsterklassen utför standardbearbetning för alla meddelanden som den statiska kontrollproceduren inte bearbetar. När den statiska kontrollen returnerar FALSE- för ett meddelande kontrollerar den fördefinierade fönsterproceduren meddelandena och utför standardåtgärden som beskrivs i följande tabell. I tabellen är en statisk textkontroll en statisk kontroll med formatmallen SS_LEFTNOWORDWRAP, SS_LEFT, SS_CENTER, SS_RIGHT eller SS_SIMPLE.
Meddelande | Standardåtgärd |
---|---|
WM_CREATE | Läser in det grafiska objektet och storleksanpassar fönstret till objektets storlek för grafiska statiska kontroller. Vidtar ingen åtgärd för andra statiska kontroller. |
WM_DESTROY | Frigör och förstör alla grafiska objekt för statiska grafiska kontroller. Vidtar ingen åtgärd för andra statiska kontroller. |
WM_ENABLE | Ommålar synliga statiska kontroller. |
WM_ERASEBKGND | Returnerar TRUE, vilket anger att kontrollen raderar bakgrunden. |
WM_GETDLGCODE | Returnerar DLGC_STATIC. |
WM_GETFONT | Returnerar ett handtag till teckensnittet för statiska textkontroller. |
WM_GETTEXT | Returnerar antalet tecken som kopierats. |
WM_GETTEXTLENGTH | Returnerar textens längd i tecken för en statisk textkontroll. |
WM_LBUTTONDBLCLK | Skickar det överordnade fönstret en STN_DBLCLK meddelandekod om kontrollformatet är SS_NOTIFY. |
WM_LBUTTONDOWN | Skickar det överordnade fönstret en STN_CLICKED meddelandekod om kontrollformatet är SS_NOTIFY. |
WM_NCLBUTTONDBLCLK | Skickar det överordnade fönstret en STN_DBLCLK meddelandekod om kontrollformatet är SS_NOTIFY. |
WM_NCLBUTTONDOWN | Skickar det överordnade fönstret en STN_CLICKED notifieringskod om kontrollformatet är SS_NOTIFY. |
WM_NCHITTEST | Returnerar HTCLIENT om kontrollformatet är SS_NOTIFY; annars returnerar HTTRANSPARENT. |
WM_PAINT | Ommålar kontrollen. |
WM_SETFONT | Anger teckensnitt och ommålningar för statiska textkontroller. |
WM_SETTEXT | Anger text och ommålningar för statiska textkontroller. |
Den fördefinierade fönsterproceduren skickar alla andra meddelanden till DefWindowProc för standardbearbetning.