WM_NOTIFY-Meldung
Wird von einem allgemeinen Steuerelement an das übergeordnete Fenster gesendet, wenn ein Ereignis aufgetreten ist oder das Steuerelement einige Informationen benötigt.
Parameter
-
wParam
-
Der Bezeichner des allgemeinen Steuerelements, das die Nachricht sendet. Dieser Bezeichner ist nicht garantiert eindeutig. Eine Anwendung sollte das Element hwndFrom oder idFrom der NMHDR-Struktur (als lParam-Parameter übergeben) verwenden, um das Steuerelement zu identifizieren.
-
lParam
-
Ein Zeiger auf eine NMHDR-Struktur , die den Benachrichtigungscode und zusätzliche Informationen enthält. Bei einigen Benachrichtigungen verweist dieser Parameter auf eine größere Struktur, die die NMHDR-Struktur als erstes Element aufweist.
Rückgabewert
Der Rückgabewert wird ignoriert, mit Ausnahme von Benachrichtigungen, die eine andere Angabe enthalten.
Bemerkungen
Das Ziel der Nachricht muss der HWND des übergeordneten Steuerelements sein. Dieser Wert kann mithilfe von GetParent abgerufen werden, wie im folgenden Beispiel gezeigt, wobei m_controlHwnd der HWND des Steuerelements selbst ist.
NMHDR nmh;
nmh.code = CUSTOM_SELCHANGE; // Message type defined by control.
nmh.idFrom = GetDlgCtrlID(m_controlHwnd);
nmh.hwndFrom = m_controlHwnd;
SendMessage(GetParent(m_controlHwnd),
WM_NOTIFY,
nmh.idFrom,
(LPARAM)&nmh);
Anwendungen behandeln die Nachricht in der Fensterprozedur des übergeordneten Fensters, wie im folgenden Beispiel gezeigt, das die Benachrichtigungsnachricht verarbeitet, die vom benutzerdefinierten Steuerelement im vorherigen Beispiel gesendet wurde.
INT_PTR CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_NOTIFY:
switch (((LPNMHDR)lParam)->code)
{
case CUSTOM_SELCHANGE:
if (((LPNMHDR)lParam)->idFrom == IDC_CUSTOMLISTBOX1)
{
... // Respond to message.
return TRUE;
}
break;
... // More cases on WM_NOTIFY switch.
break;
}
... // More cases on message switch.
}
return FALSE;
}
Einige Benachrichtigungen, hauptsächlich solche, die sich seit langer Zeit in der API befinden, werden als WM_COMMAND Nachrichten gesendet. Weitere Informationen finden Sie unter Steuernachrichten.
Wenn sich der Nachrichtenhandler in einer Dialogfeldprozedur befindet, müssen Sie die SetWindowLong-Funktion mit DWL_MSGRESULT verwenden, um einen Rückgabewert festzulegen.
Bei Windows Vista und höheren Systemen kann die WM_NOTIFY Nachricht nicht zwischen Prozessen gesendet werden.
Viele Benachrichtigungen sind sowohl im ANSI- als auch im Unicode-Format verfügbar. Das Fenster, das die WM_NOTIFY Nachricht sendet, verwendet die WM_NOTIFYFORMAT Nachricht, um zu bestimmen, welches Format verwendet werden soll. Weitere Informationen finden Sie unter WM_NOTIFYFORMAT .
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows Vista [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows Server 2003 [nur Desktop-Apps] |
Header |
|