Freigeben über


Empfang von Benachrichtigungen von den allgemeinen Steuerelementen

Gemeinsame Fenster sind untergeordnete Steuerelemente, die Benachrichtigungsmeldungen für das übergeordnete Fenster gesendet werden, wenn Ereignisse, wie Eingaben vom Benutzer im Steuerelement auftreten.

Die Anwendung ist auf diesen Benachrichtigungsmeldungen, um zu bestimmen, welche Aktion der Benutzer ausführen möchte.Die häufigsten Steuerelemente als Benachrichtigungsmeldungen gesendet WM_NOTIFY Nachrichten.Windows-Steuerelemente senden die meisten Benachrichtigungsmeldungen als WM_COMMAND Nachrichten.CWnd::OnNotify ist der Handler für die WM_NOTIFY Meldung.Wie bei CWnd::OnCommand, stellt die Implementierung von OnNotify die Benachrichtigung an OnCmdMsg für die Behandlung in den Meldungszuordnungen aus.Der Meldungszuordnungseintrag zum Behandeln von Benachrichtigungen ist ON_NOTIFY.Weitere Informationen finden Sie unter Technischer Hinweis: 61 ON_NOTIFY- und WM_NOTIFY-Meldungen.

Alternativ kann eine abgeleitete Klasse ihre eigenen Benachrichtigungsmeldungen mithilfe der Reflektion Meldung "Bearbeiten". Weitere Informationen finden Sie unter Technischer Hinweis: 62 Meldungs-Reflektion für Windows-Steuerelemente.

Die Cursorposition in einer Benachrichtigungsmeldung erhalten

Bei Möglichkeit empfiehlt es sich, die aktuelle Position des Cursors zu bestimmen, ob bestimmte Benachrichtigungsmeldungen durch eine allgemeine Steuerelemente empfangen werden.Beispielsweise kann es hilfreich sein, die aktuelle Position des Mauszeigers zu bestimmen, wenn eine allgemeine Steuerelemente NM_RCLICK eine Benachrichtigungsmeldung erhält.

Es gibt eine einfache Möglichkeit, dies zu erreichen, indem CWnd::GetCurrentMessage aufruft.Es ruft diese Methode nur die Position des Mauszeigers zu dem Zeitpunkt ab, an dem die Nachricht gesendet wurde.Da der Cursor verschoben werden, da die Meldung gesendet wurde, müssen Sie CWnd::GetCursorPos aufrufen, um die aktuelle Position des Mauszeigers abzurufen.

HinweisHinweis

CWnd::GetCurrentMessage muss innerhalb eines Message-Handlers nur aufgerufen werden.

Fügen Sie den folgenden Code dem Text des Benachrichtigungsmeldungs hinzu handlers NM_RCLICK(in diesem Beispiel):

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

An diesem Punkt wird der Speicherort der Mauszeiger im cursorPos-Objekt gespeichert.

Siehe auch

Referenz

Erstellen und mit Steuerelementen

Konzepte

Steuerelemente (MFC)