WM_NOTIFY-Meldung

Wird von einem allgemeinen Steuerelement an das übergeordnete Fenster gesendet, wenn ein Ereignis aufgetreten ist oder das Steuerelement einige Informationen erfordert.

Parameter

wParam

Der Bezeichner des allgemeinen Steuerelements, das die Nachricht sendet. Dieser Bezeichner ist nicht garantiert eindeutig. Eine Anwendung sollte das hwndFrom - oder idFrom-Element der NMHDR-Struktur (übergeben als lParam-Parameter ) 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 mit der NMHDR-Struktur als erstes Mitglied.

Rückgabewert

Der Rückgabewert wird ignoriert, außer bei Benachrichtigungsmeldungen, die andernfalls angegeben werden.

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, wodurch die vom benutzerdefinierten Steuerelement im vorherigen Beispiel gesendete Benachrichtigung behandelt wird.

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 diejenigen, die sich seit langer Zeit in der API befinden, werden als WM_COMMAND Nachrichten gesendet. Weitere Informationen finden Sie unter Steuerelementnachrichten.

Wenn sich der Nachrichtenhandler in einer Dialogfeldprozedur befindet, müssen Sie die Funktion SetWindowLong mit DWL_MSGRESULT verwenden, um einen Rückgabewert festzulegen.

Für Windows Vista- und spätere Systeme kann die WM_NOTIFY Nachricht nicht zwischen Prozessen gesendet werden.

Viele Benachrichtigungen sind sowohl in ANSI- als auch in Unicode-Formaten verfügbar. Das Fenster, das die WM_NOTIFY Nachricht sendet, verwendet die WM_NOTIFYFORMAT Nachricht, um zu bestimmen, welches Format verwendet werden soll. Weitere Diskussionen finden Sie WM_NOTIFYFORMAT .

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2003 [Nur Desktop-Apps]
Header
Winuser.h

Siehe auch

WM_NOTIFYFORMAT