Delen via


Melding ontvangen van algemene besturingselementen

Algemene bedieningselementen zijn kindvensters die notificaties sturen naar het hoofdvenster wanneer evenementen, zoals gebruikersinvoer, plaatsvinden in het bedieningselement.

De toepassing is afhankelijk van deze meldingsberichten om te bepalen welke actie de gebruiker wil uitvoeren. De meest voorkomende besturingselementen verzenden meldingsberichten als WM_NOTIFY berichten. Windows-besturingselementen verzenden de meeste meldingsberichten als WM_COMMAND berichten. CWnd::OnNotify is de handler voor het WM_NOTIFY bericht. Net als bij CWnd::OnCommand wordt bij de implementatie van OnNotify het meldingsbericht naar OnCmdMsg verzonden voor de verwerking in berichtoverzichten. De invoer in de berichtkaart voor het verwerken van meldingen is ON_NOTIFY. Zie Technische opmerking 61: ON_NOTIFY en WM_NOTIFY Berichten voor meer informatie.

Een afgeleide klasse kan ook zijn eigen meldingsberichten verwerken met behulp van 'berichtspiegeling'. Zie Technische opmerking 62: Berichtspiegeling voor Windows-besturingselementen voor meer informatie.

De cursorpositie ophalen in een meldingsbericht

Soms is het handig om de huidige positie van de cursor te bepalen wanneer bepaalde meldingsberichten worden ontvangen door een gemeenschappelijk besturingselement. Het is bijvoorbeeld handig om de huidige cursorlocatie te bepalen wanneer een gemeenschappelijk besturingselement een NM_RCLICK meldingsbericht ontvangt.

Er is een eenvoudige manier om dit te bereiken door aan te roepen CWnd::GetCurrentMessage. Met deze methode wordt echter alleen de cursorpositie opgehaald op het moment dat het bericht is verzonden. Omdat de cursor mogelijk is verplaatst sinds het bericht is verzonden, moet u aanroepen CWnd::GetCursorPos om de huidige cursorpositie op te halen.

Opmerking

CWnd::GetCurrentMessage mag alleen worden aangeroepen binnen een berichtenhandler.

Voeg de volgende code toe aan de hoofdtekst van de berichthandler voor meldingen (in dit voorbeeld NM_RCLICK):

CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;

Op dit moment wordt de locatie van de muiscursor opgeslagen in het cursorPos object.

Zie ook

Besturingselementen maken en gebruiken
Besturingselementen