Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En knapp kan skicka meddelanden till det överordnade fönstret och ett överordnat fönster kan skicka meddelanden till en knapp.
Följande avsnitt beskrivs i det här avsnittet.
- skicka meddelanden till knappar
- hantera meddelanden från en knapp
- meddelanden från knappar
- knappfärgmeddelanden
- knappen Standard för meddelandebearbetning
- Relaterade ämnen
Skicka meddelanden till knappar
Ett överordnat fönster kan skicka meddelanden till en knapp i ett överlappande eller underordnat fönster med hjälp av funktionen SendMessage. eller så kan den skicka meddelanden till en knapp i en dialogruta med hjälp av SendDlgItemMessage, CheckDlgButton, CheckRadioButtonoch IsDlgButtonChecked funktioner.
Ett program kan använda meddelandet BM_GETCHECK för att hämta kryssrutans eller alternativknappens bocktillstånd. Ett program kan också använda meddelandet BM_GETSTATE för att hämta knappens aktuella tillstånd (kontrolltillstånd, push-tillstånd och fokustillstånd). Om du vill få information om ett visst tillstånd använder du en bitmask för det returnerade tillståndsvärdet.
Det BM_SETCHECK meddelandet anger kryssrutans eller alternativknappens bocktillstånd. meddelandet returnerar noll. Meddelandet BM_SETSTATE anger push-tillståndet för en knapp. det här meddelandet returnerar också noll. Meddelandet BM_SETSTYLE ändrar stilen på en knapp. Den är utformad för att ändra knappformat inom en typ (till exempel ändra en kryssruta till en automatisk kryssruta). Den är inte utformad för att ändra mellan typer (till exempel ändra en kryssruta till en alternativknapp). Ett program bör inte ändra en knapp från en typ till en annan.
En knapp i formatet BS_BITMAP eller BS_ICON visar en bitmapp eller ikon i stället för text. Det BM_SETIMAGE meddelandet associerar ett handtag till en bitmapp eller ikon med en knapp. Meddelandet BM_GETIMAGE hämtar ett handtag till bitmappen eller ikonen som är associerad med en knapp.
Ett program kan också använda meddelandet DM_GETDEFID för att hämta identifieraren för standardknappen i en dialogruta. Ett program kan använda meddelandet DM_SETDEFID för att ange standardknappen för en dialogruta.
Att anropa funktionen CheckDlgButton eller CheckRadioButton motsvarar att skicka ett BM_SETCHECK meddelande. Att anropa funktionen IsDlgButtonChecked motsvarar att skicka ett BM_GETCHECK meddelande.
Hantera meddelanden från en knapp
Meddelanden från en knapp skickas som antingen WM_COMMAND eller WM_NOTIFY meddelanden. Information om vilket meddelande som används finns på referenssidan för varje meddelande.
Mer information om hur du hanterar meddelanden finns i Kontrollera meddelanden. Se även Knappmeddelanden.
Meddelanden från knappar
När användaren klickar på en knapp ändras dess tillstånd och knappen skickar meddelandekoder i form av WM_COMMAND meddelanden till det överordnade fönstret. En push-knappkontroll skickar till exempel BN_CLICKED meddelandekod när användaren väljer knappen. I alla fall (förutom för BCN_HOTITEMCHANGE) innehåller wParam-parameterns lågordningsord kontrollidentifieraren, wParam- innehåller meddelandekoden och parametern lParam innehåller kontrollfönstrets handtag.
Både meddelandets och det överordnade fönstrets svar beror på knappens typ, format och aktuella tillstånd. Följande är knappmeddelandekoderna som ett program ska övervaka och bearbeta.
| Meddelandekod | Beskrivning |
|---|---|
| BCN_HOTITEMCHANGE | Musen gick in i eller lämnade klientområdet för en knapp. |
| BN_CLICKED | Användaren klickade på en knapp. |
| BN_DBLCLK eller BN_DOUBLECLICKED | Användaren dubbelklickade på en knapp. |
| BN_DISABLE | En knapp är inaktiverad. |
| BN_PUSHED eller BN_HILITE | Användaren tryckte på en knapp. |
| BN_KILLFOCUS | Knappen förlorade tangentbordets fokus. |
| BN_PAINT | Knappen ska målas. |
| BN_SETFOCUS | Knappen fick tangentbordets fokus. |
| BN_UNPUSHED eller BN_UNHILITE | Knappen trycks inte längre. |
En knapp skickar BN_DISABLE, BN_PUSHED, BN_KILLFOCUS, BN_PAINT, BN_SETFOCUSoch BN_UNPUSHED endast om den har BS_NOTIFY formatmall. BN_DBLCLK meddelandekoder skickas automatiskt för knapparna BS_USERBUTTON, BS_RADIOBUTTONoch BS_OWNERDRAW. Andra knapptyper skickar endast BN_DBLCLK om de har BS_NOTIFY formatmall. Alla knappar skickar BN_CLICKED meddelandekod oavsett knappformat.
För automatiska knappar ändrar systemet push-läget och målar upp knappen. I det här fallet bearbetar programmet vanligtvis endast BN_CLICKED och BN_DBLCLK meddelandekoder. För knappar som inte är automatiska svarar programmet vanligtvis på meddelandekoden genom att skicka ett meddelande för att ändra knappens tillstånd. Information om hur du skickar meddelanden till knappar finns i Skicka meddelanden till knappar.
När användaren väljer en ägarritad knapp skickar knappen sitt överordnade fönster ett WM_DRAWITEM meddelande som innehåller identifieraren för kontrollen som ska ritas och information om dess dimensioner och tillstånd.
Knappfärgsmeddelanden
Systemet innehåller standardfärgvärden för knappar. Ett program kan hämta standardvärdena för dessa färger genom att anropa funktionen GetSysColor eller ange värdena genom att anropa funktionen SetSysColors. I följande tabell visas standardvärdena för knappfärg.
| Värde | Elementfärgat |
|---|---|
| COLOR_BTNFACE | Knappytor. |
| COLOR_BTNHIGHLIGHT | Markera en knapps övre och vänstra kanter. |
| COLOR_BTNSHADOW | Skuggområde (nederkant och höger kant) för en knapp. |
| COLOR_BTNTEXT | Vanlig (icke-komprimerad) text i knappar. |
| COLOR_GRAYTEXT | Inaktiverad (grå) text i knappar. Den här färgen är inställd på 0 om den aktuella visningsdrivrutinen inte stöder en helgrå färg. |
| COLOR_WINDOW | Fönsterbakgrunder. |
| COLOR_WINDOWFRAME | Fönsterrutor. |
| COLOR_WINDOWTEXT | Text i fönster. |
Men att anropa SetSysColors påverkar alla program, så du bör inte anropa den här funktionen för att anpassa knappar för ditt program.
Systemet skickar ett WM_CTLCOLORBTN meddelande till en knapps överordnade fönster innan en knapp ritas. Det här meddelandet innehåller ett handtag till knappens enhetskontext och ett handtag till det underordnade fönstret. Det överordnade fönstret kan använda dessa referenser för att ändra knappens text- och bakgrundsfärger. Men endast ägarritade knappar svarar på det överordnade fönstret som bearbetar meddelandet.
Knappen Standard för meddelandebearbetning
Fönsterproceduren för den fördefinierade knappkontrollfönsterklassen utför standardbearbetning för alla meddelanden som knappkontrollproceduren inte bearbetar. När knappkontrollproceduren returnerar FALSE- för ett meddelande kontrollerar den fördefinierade fönsterproceduren meddelandena och utför standardåtgärderna som anges i följande tabell.
| Meddelande | Standardåtgärd | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BM_CLICK | Skickar knappen en WM_LBUTTONDOWN och ett WM_LBUTTONUP meddelande och skickar det överordnade fönstret en BN_CLICKED meddelandekod. | ||||||||||||||||
| BM_GETCHECK | Returnerar knappens kontrolltillstånd. | ||||||||||||||||
| BM_GETIMAGE | Returnerar ett handtag till bitmappen eller ikonen som är associerad med knappen eller NULL- om knappen inte har någon bitmapp eller ikon. | ||||||||||||||||
| BM_GETSTATE | Returnerar det aktuella kontrolltillståndet, push-tillståndet och fokustillståndet för knappen. | ||||||||||||||||
| BM_SETCHECK | Anger kontrolltillståndet för alla alternativknappar och kryssrutor. Om parametern wParam är större än noll för alternativknappar får knappen WS_TABSTOP formatmall. | ||||||||||||||||
| BM_SETIMAGE | Associerar den angivna bitmappen eller ikonhandtaget med knappen och returnerar ett handtag till föregående bitmapp eller ikon. | ||||||||||||||||
| BM_SETSTATE | Anger knappens push-tillstånd. För ägarritade knappar skickas ett WM_DRAWITEM meddelande till det överordnade fönstret om knappens tillstånd har ändrats. | ||||||||||||||||
| BM_SETSTYLE | Anger knappformatet. Om lågordningsordet i parametern lParam är TRUEritas knappen om. | ||||||||||||||||
| WM_CHAR | Markerar en kryssruta eller en automatisk kryssruta när användaren trycker på plus-tangenterna (+) eller lika med (=). Avmarkerar en kryssruta eller automatisk kryssruta när användaren trycker på minusknappen (–). | ||||||||||||||||
| WM_ENABLE | Målar knappen. | ||||||||||||||||
| WM_ERASEBKGND | Raderar bakgrunden för ägarritade knappar. Bakgrunderna för andra knappar raderas som en del av WM_PAINT och WM_ENABLE bearbetning. | ||||||||||||||||
| WM_GETDLGCODE | Returnerar värden som anger vilken typ av indata som bearbetas av standardknappproceduren, enligt följande tabell.
|
||||||||||||||||
| WM_GETFONT | Returnerar ett handtag till det aktuella teckensnittet. | ||||||||||||||||
| WM_KEYDOWN | Trycker på knappen om användaren trycker på BLANKSTEG. | ||||||||||||||||
| WM_KEYUP | Släpper musinsamlingen för alla fall utom TAB-nyckeln. | ||||||||||||||||
| WM_KILLFOCUS | Tar bort fokusrektangeln från en knapp. För push-knappar och standardknappar är fokusrektangeln ogiltig. Om knappen har musfångst, frigörs avbildningen, knappen klickas inte och alla push-tillstånd tas bort. | ||||||||||||||||
| WM_LBUTTONDBLCLK | Skickar en BN_DBLCLK meddelandekod till det överordnade fönstret för alternativknappar och ägarritade knappar. För andra knappar bearbetas ett dubbelklick som ett WM_LBUTTONDOWN meddelande. | ||||||||||||||||
| WM_LBUTTONDOWN | Markerar knappen om musmarkörens position ligger inom knappens klientrektangeln. | ||||||||||||||||
| WM_LBUTTONUP | Släpper musfångst om knappen hade musen fånga. | ||||||||||||||||
| WM_MOUSEMOVE | Utför samma åtgärd som WM_LBUTTONDOWN, om knappen har musfångst. Annars utförs ingen åtgärd. | ||||||||||||||||
| WM_NCCREATE | Omvandlar alla BS_OWNERDRAW till en BS_PUSHBUTTON knapp. | ||||||||||||||||
| WM_NCHITTEST | Returnerar HTTRANSPARENT om knappkontrollen är en gruppruta. | ||||||||||||||||
| WM_PAINT | Ritar knappen enligt dess format och aktuella tillstånd. | ||||||||||||||||
| WM_SETFOCUS | Ritar en fokusrektangel på knappen för att få fokus. För alternativknappar och automatiska alternativknappar skickas det överordnade fönstret en BN_CLICKED meddelandekod. | ||||||||||||||||
| WM_SETFONT | Anger ett nytt teckensnitt och uppdaterar eventuellt fönstret. | ||||||||||||||||
| WM_SETTEXT | Anger knappens text. När det gäller en gruppruta målas meddelandet över den befintliga texten innan grupprutan ommålas med den nya texten. | ||||||||||||||||
| WM_SYSKEYUP | Släpper musinsamlingen för alla fall utom TAB-nyckeln. |
Den fördefinierade fönsterproceduren skickar alla andra meddelanden till funktionen DefWindowProc för standardbearbetning.
Relaterade ämnen