Delen via


Berichten beheren

Deze sectie bevat informatie over hoe Windows-berichten worden gebruikt om te communiceren met besturingselementen.

De volgende onderwerpen worden besproken.

Berichten naar algemene besturingselementen

Omdat algemene besturingselementen vensters zijn, kan een toepassing hiermee communiceren met behulp van algemene Microsoft Win32-berichten, zoals WM_GETFONT of WM_SETTEXT. Daarnaast ondersteunt de vensterklasse van elk algemeen besturingselement een set besturingsspecifieke berichten. Normaal gesproken gebruikt een toepassing SendMessage of SendDlgItemMessage- om berichten door te geven aan het besturingselement (vaak ontvangen gegevens in de retourwaarde).

Sommige veelgebruikte besturingselementen hebben ook een set macro's die een toepassing kan gebruiken in plaats van SendMessage-. De macro's zijn doorgaans gemakkelijker te gebruiken dan de functies. Met de volgende voorbeeldcode wordt de tekst van het geselecteerde structuurweergave-item opgehaald, eerst met behulp van de onbewerkte berichten en ten tweede met behulp van de equivalente macro's. Stel dat de greep van het besturingselementvenster is.

BOOL fSuccess;
WCHAR itemText[99];
TVITEM tvItem = { 0 };
tvItem.mask = TVIF_TEXT;
tvItem.cchTextMax = ARRAYSIZE(itemText);
tvItem.pszText = itemText;

// This...
tvItem.hItem = (HTREEITEM)SendMessage(hwnd, TVM_GETNEXTITEM, TVGN_CARET, NULL);
fSuccess = SendMessage(hwnd, TVM_GETITEM, 0, (LPARAM)&tvItem);

// ... is equivalent to this.
tvItem.hItem = TreeView_GetSelection(hwnd);
fSuccess = TreeView_GetItem(hwnd, &tvItem);

Wanneer een wijziging wordt aangebracht in de systeemkleurinstellingen, verzendt Windows een WM_SYSCOLORCHANGE bericht naar alle vensters op het hoogste niveau. Het venster op het hoogste niveau moet het WM_SYSCOLORCHANGE bericht doorsturen naar de algemene besturingselementen; anders worden de besturingselementen niet op de hoogte gesteld van de kleurwijziging. Doorsturen van het bericht zorgt ervoor dat de kleuren die door uw algemene besturingselementen worden gebruikt, consistent zijn met de kleuren die door andere gebruikersinterfaceobjecten worden gebruikt. Een werkbalkbesturingselement gebruikt bijvoorbeeld de kleur 3D-objecten om de knoppen te tekenen. Als de gebruiker de kleur van het 3D-object wijzigt, maar het WM_SYSCOLORCHANGE bericht niet wordt doorgestuurd naar de werkbalk, blijven de werkbalkknoppen in de oorspronkelijke kleur staan (of zelfs veranderen in een combinatie van oude en nieuwe kleuren) terwijl de kleur van andere knoppen in het systeem verandert.

Meldingen van besturingselementen

Besturingselementen zijn onderliggende vensters die meldingsberichten verzenden naar het bovenliggende venster wanneer gebeurtenissen, meestal geactiveerd door invoer van de gebruiker, plaatsvinden in het besturingselement. De toepassing is afhankelijk van deze meldingsberichten om te bepalen welke actie de gebruiker wil uitvoeren. Met uitzondering van trackbars, die gebruikmaken van de WM_HSCROLL- en WM_VSCROLL-berichten om hun bovenliggende wijzigingen op de hoogte te stellen, verzenden algemene besturingselementen meldingen als WM_COMMAND of WM_NOTIFY berichten, zoals opgegeven in het referentieonderwerp voor de melding. Oudere meldingen (die al lange tijd in de API zijn) maken doorgaans gebruik van WM_COMMAND.

De parameter lParam van WM_NOTIFY is ofwel het adres van een NMHDR- structuur of het adres van een grotere structuur met NMHDR- als eerste lid. De structuur bevat de meldingscode en identificeert het algemene besturingselement dat het meldingsbericht heeft verzonden. De betekenis van de resterende structuurleden, indien aanwezig, varieert afhankelijk van de meldingscode.

Elk type algemeen besturingselement heeft een bijbehorende set meldingscodes. De algemene besturingselementbibliotheek biedt ook meldingscodes die kunnen worden verzonden door meer dan één type algemeen besturingselement. Raadpleeg de documentatie voor het bepalen van de interesse om te bepalen welke meldingscodes worden verzonden en welke indeling ze gebruiken.

Code die laat zien hoe u WM_NOTIFY berichten verwerkt, raadpleegt u het naslagonderwerp voor dat bericht.

Referentie voor algemeen beheer