Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een knop kan berichten verzenden naar het bovenliggende venster en een bovenliggend venster kan berichten verzenden naar een knop.
De volgende onderwerpen worden in deze sectie besproken.
- Berichten verzenden naar knoppen
- berichten verwerken vanaf een knop
- meldingsberichten van knoppen
- knopkleurberichten
- knop Standaardberichtverwerking
- Verwante onderwerpen
Berichten verzenden naar knoppen
Een bovenliggend venster kan berichten verzenden naar een knop in een overlappend of onderliggend venster met behulp van de functie SendMessage, of het kan berichten verzenden naar een knop in een dialoogvenster met behulp van de SendDlgItemMessage, CheckDlgButton, CheckRadioButtonen IsDlgButtonChecked functies.
Een toepassing kan het BM_GETCHECK bericht gebruiken om de controlestatus van een selectievakje of keuzerondje op te halen. Een toepassing kan ook het BM_GETSTATE bericht gebruiken om de huidige statussen van de knop op te halen (de controlestatus, pushstatus en focusstatus). Als u informatie over een specifieke status wilt ophalen, gebruikt u een bitmasker op de geretourneerde statuswaarde.
Het BM_SETCHECK bericht stelt de status van een selectievakje of keuzerondje in; het bericht retourneert nul. Het BM_SETSTATE bericht stelt de drukstatus van een knop in; dit bericht retourneert ook nul. Het BM_SETSTYLE bericht wijzigt de stijl van een knop. Het is ontworpen voor het wijzigen van knopstijlen binnen een type (bijvoorbeeld het wijzigen van een selectievakje in een automatisch selectievakje). Het is niet ontworpen voor het wisselen tussen typen (bijvoorbeeld het wijzigen van een selectievakje in een keuzerondje). Een toepassing mag een knop niet wijzigen van het ene type naar het andere.
Een knop van de stijl BS_BITMAP of BS_ICON geeft een bitmap of pictogram weer in plaats van tekst. Het BM_SETIMAGE bericht koppelt een greep aan een bitmap of pictogram aan een knop. Het BM_GETIMAGE bericht haalt een ingang op voor de bitmap of het pictogram dat aan een knop is gekoppeld.
Een toepassing kan ook het DM_GETDEFID bericht gebruiken om de id op te halen van het standaardbesturingsknop in een dialoogvenster. Een toepassing kan het DM_SETDEFID bericht gebruiken om de standaardknop voor een dialoogvenster in te stellen.
Het aanroepen van de functie CheckDlgButton of CheckRadioButton is gelijk aan het verzenden van een BM_SETCHECK bericht. Het aanroepen van de functie IsDlgButtonChecked is gelijk aan het verzenden van een BM_GETCHECK bericht.
Berichten verwerken vanaf een knop
Meldingen van een knop worden verzonden als WM_COMMAND of WM_NOTIFY berichten. Informatie over welk bericht wordt gebruikt, vindt u op de referentiepagina voor elke melding.
Zie Berichten beherenvoor meer informatie over het afhandelen van berichten. Zie ook Knopberichten.
Meldingsberichten van knoppen
Wanneer de gebruiker op een knop klikt, verandert de status en verzendt de knop meldingscodes, in de vorm van WM_COMMAND berichten, naar het bovenliggende venster. Met een besturingselement voor een drukknop wordt bijvoorbeeld de BN_CLICKED meldingscode verzonden wanneer de gebruiker de knop kiest. In alle gevallen (met uitzondering van BCN_HOTITEMCHANGE), bevat het woord in lage volgorde van de parameter wParam de besturings-id, het woord in hoge volgorde van wParam de meldingscode en de parameter lParam bevat de besturingsvenstergreep.
Zowel het bericht als het antwoord van het bovenliggende venster zijn afhankelijk van het type, de stijl en de huidige status van de knop. Hieronder ziet u de meldingscodes voor knoppen die een toepassing moet bewaken en verwerken.
| Meldingscode | Beschrijving |
|---|---|
| BCN_HOTITEMCHANGE | De muis heeft het clientgebied van een knop opgegeven of verlaten. |
| BN_CLICKED | De gebruiker heeft op een knop geklikt. |
| BN_DBLCLK of BN_DOUBLECLICKED | De gebruiker dubbelklikt op een knop. |
| BN_DISABLE | Een knop is uitgeschakeld. |
| BN_PUSHED of BN_HILITE | De gebruiker heeft een knop ingedrukt. |
| BN_KILLFOCUS | De knop heeft de focus van het toetsenbord verloren. |
| BN_PAINT | De knop moet worden geschilderd. |
| BN_SETFOCUS | De knop heeft de toetsenbordfocus gekregen. |
| BN_UNPUSHED of BN_UNHILITE | De knop wordt niet meer ingedrukt. |
Een knop verzendt de BN_DISABLE, BN_PUSHED, BN_KILLFOCUS, BN_PAINT, BN_SETFOCUSen BN_UNPUSHED meldingscodes alleen als deze de stijl BS_NOTIFY heeft. BN_DBLCLK meldingscodes worden automatisch verzonden voor BS_USERBUTTON, BS_RADIOBUTTONen BS_OWNERDRAW knoppen. Andere knoptypen verzenden alleen BN_DBLCLK als ze de stijl BS_NOTIFY hebben. Alle knoppen verzenden de BN_CLICKED meldingscode, ongeacht hun knopstijlen.
Voor automatische knoppen verandert het systeem de drukstatus en schildert de knop. In dit geval verwerkt de toepassing doorgaans alleen de BN_CLICKED en BN_DBLCLK meldingscodes. Voor knoppen die niet automatisch zijn, reageert de toepassing doorgaans op de meldingscode door een bericht te verzenden om de status van de knop te wijzigen. Zie Berichten verzenden naar knoppenvoor informatie over het verzenden van berichten naar knoppen.
Wanneer de gebruiker een door de eigenaar getekende knop selecteert, verzendt de knop het bovenliggende venster een WM_DRAWITEM bericht met de id van het besturingselement dat moet worden getekend en informatie over de afmetingen en status ervan.
Knopkleurberichten
Het systeem biedt standaardkleurwaarden voor knoppen. Een toepassing kan de standaardwaarden voor deze kleuren ophalen door de functie GetSysColor aan te roepen of de waarden in te stellen door de functie SetSysColors aan te roepen. In de volgende tabel ziet u de standaardwaarden voor knopkleuren.
| Waarde | Element gekleurd |
|---|---|
| COLOR_BTNFACE | Knopvlakken. |
| COLOR_BTNHIGHLIGHT | Markeringsgebied (de boven- en linkerranden) van een knop. |
| COLOR_BTNSHADOW | Schaduwgebied (de onder- en rechterranden) van een knop. |
| COLOR_BTNTEXT | Normale (niet-gegrareerde) tekst in knoppen. |
| COLOR_GRAYTEXT | Uitgeschakelde (grijze) tekst in knoppen. Deze kleur is ingesteld op 0 als het huidige beeldschermstuurprogramma geen ondersteuning biedt voor een effen grijze kleur. |
| COLOR_WINDOW | Vensterachtergronden. |
| COLOR_WINDOWFRAME | Raamkozijnen. |
| COLOR_WINDOWTEXT | Tekst in vensters. |
Het aanroepen van SetSysColors is echter van invloed op alle toepassingen. Daarom moet u deze functie niet aanroepen om knoppen voor uw toepassing aan te passen.
Het systeem verzendt een WM_CTLCOLORBTN bericht naar het bovenliggende venster van een knop voordat u een knop tekent. Dit bericht bevat een ingang voor de apparaatcontext van de knop en een ingang naar het onderliggende venster. Het bovenliggende venster kan deze grepen gebruiken om de tekst- en achtergrondkleuren van de knop te wijzigen. Alleen door de eigenaar getekende knoppen reageren echter op het bovenliggende venster dat het bericht verwerkt.
Knop Standaardberichtverwerking
De vensterprocedure voor de vooraf gedefinieerde vensterklasse voor knopbesturingselementen voert standaardverwerking uit voor alle berichten die de knopbesturingselementprocedure niet verwerkt. Wanneer de knopbesturingselementprocedure ONWAAR voor een bericht retourneert, controleert de vooraf gedefinieerde vensterprocedure de berichten en voert de standaardacties uit die worden vermeld in de volgende tabel.
| Bericht | Standaardactie | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| BM_CLICK | Hiermee verzendt u de knop een WM_LBUTTONDOWN en een WM_LBUTTONUP bericht en verzendt u het bovenliggende venster een BN_CLICKED meldingscode. | ||||||||||||||||
| BM_GETCHECK | Retourneert de controlestatus van de knop. | ||||||||||||||||
| BM_GETIMAGE | Hiermee wordt een greep geretourneerd naar de bitmap of het pictogram dat is gekoppeld aan de knop of NULL- als de knop geen bitmap of pictogram heeft. | ||||||||||||||||
| BM_GETSTATE | Retourneert de huidige controlestatus, pushstatus en focusstatus van de knop. | ||||||||||||||||
| BM_SETCHECK | Hiermee stelt u de controlestatus in voor alle stijlen van keuzerondjes en selectievakjes. Als de parameter wParam groter is dan nul voor keuzerondjes, krijgt de knop de stijl WS_TABSTOP. | ||||||||||||||||
| BM_SETIMAGE | Koppelt de opgegeven bitmap- of pictogramgreep aan de knop en retourneert een ingang naar de vorige bitmap of het vorige pictogram. | ||||||||||||||||
| BM_SETSTATE | Hiermee stelt u de drukstatus van de knop in. Voor door de eigenaar getekende knoppen wordt een WM_DRAWITEM bericht verzonden naar het bovenliggende venster als de status van de knop is gewijzigd. | ||||||||||||||||
| BM_SETSTYLE | Hiermee stelt u de knopstijl in. Als het woord in lage volgorde van de parameter lParam is TRUE, wordt de knop opnieuw getekend. | ||||||||||||||||
| WM_CHAR | Hiermee wordt een selectievakje of automatisch selectievakje gecontroleerd wanneer de gebruiker op de plustoetsen (+) of gelijk (=) drukt. Hiermee schakelt u een selectievakje of automatisch selectievakje uit wanneer de gebruiker op de mintekentoets (–) drukt. | ||||||||||||||||
| WM_ENABLE | Tekent de knop. | ||||||||||||||||
| WM_ERASEBKGND | Hiermee wist u de achtergrond voor door de eigenaar getekende knoppen. De achtergronden van andere knoppen worden gewist als onderdeel van de WM_PAINT en WM_ENABLE verwerking. | ||||||||||||||||
| WM_GETDLGCODE | Retourneert waarden die aangeven welk type invoer wordt verwerkt door de standaardknopprocedure, zoals wordt weergegeven in de volgende tabel.
|
||||||||||||||||
| WM_GETFONT | Retourneert een ingang naar het huidige lettertype. | ||||||||||||||||
| WM_KEYDOWN | Druk op de knop als de gebruiker op de SPATIEBALK drukt. | ||||||||||||||||
| WM_KEYUP | Hiermee wordt de muisopname vrijgegeven voor alle gevallen, behalve de TAB-toets. | ||||||||||||||||
| WM_KILLFOCUS | Hiermee verwijdert u de focusrechthoek van een knop. Voor drukknoppen en standaarddrukknoppen is de focusrechthoek ongeldig. Als de knop de muisopname bevat, wordt de opname losgelaten, wordt de knop niet geklikt en wordt er een pushstatus verwijderd. | ||||||||||||||||
| WM_LBUTTONDBLCLK | Hiermee wordt een BN_DBLCLK meldingscode verzonden naar het bovenliggende venster voor keuzerondjes en door de eigenaar getekende knoppen. Voor andere knoppen wordt een dubbelklik verwerkt als een WM_LBUTTONDOWN bericht. | ||||||||||||||||
| WM_LBUTTONDOWN | Markeert de knop als de positie van de muiscursor zich in de clientrechthoek van de knop bevindt. | ||||||||||||||||
| WM_LBUTTONUP | Laat de muisopname los als de knop de muis heeft vastgelegd. | ||||||||||||||||
| WM_MOUSEMOVE | Voert dezelfde actie uit als WM_LBUTTONDOWN, als de knop de muis vastlegt. Anders wordt er geen actie uitgevoerd. | ||||||||||||||||
| WM_NCCREATE | Hiermee verandert u een BS_OWNERDRAW knop in een BS_PUSHBUTTON knop. | ||||||||||||||||
| WM_NCHITTEST | Retourneert HTTRANSPARENT, als het knop besturingselement een groepsvak is. | ||||||||||||||||
| WM_PAINT | Hiermee tekent u de knop op basis van de stijl en de huidige status. | ||||||||||||||||
| WM_SETFOCUS | Hiermee tekent u een focusrechthoek op de knop die de focus krijgt. Voor keuzerondjes en automatische keuzerondjes wordt het bovenliggende venster een BN_CLICKED meldingscode verzonden. | ||||||||||||||||
| WM_SETFONT | Hiermee stelt u een nieuw lettertype in en werkt u het venster desgewenst bij. | ||||||||||||||||
| WM_SETTEXT | Hiermee stelt u de tekst van de knop in. In het geval van een groepsvak wordt het bericht over de bestaande tekst geschilderd voordat het groepsvak opnieuw wordt geschilderd met de nieuwe tekst. | ||||||||||||||||
| WM_SYSKEYUP | Hiermee wordt de muisopname vrijgegeven voor alle gevallen, behalve de TAB-toets. |
De vooraf gedefinieerde vensterprocedure geeft alle andere berichten door aan de DefWindowProc--functie voor standaardverwerking.
Verwante onderwerpen