閱讀英文

共用方式為


WM_NOTIFY 訊息

當事件發生或控制項需要一些資訊時,由通用控制項傳送至其父視窗。

參數

wParam

傳送訊息之通用控制項的識別碼。 此識別碼不保證是唯一的。 應用程式應該使用NMHDR結構的hwndFromidFrom成員, (傳遞為lParam參數) 來識別控制項。

lParam

NMHDR結構的指標,其中包含通知程式碼和其他資訊。 對於某些通知訊息,此參數會指向具有 NMHDR 結構作為其第一個成員的較大結構。

傳回值

除了指定 其他通知訊息之外,會忽略傳回值。

備註

訊息的目的地必須是 控制項父系的 HWND 。 您可以使用 GetParent來取得此值,如下列範例所示, 其中 m_controlHwnd 是控制項本身的 HWND

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);

應用程式會在父視窗的視窗程式中處理訊息,如下列範例所示,它會處理上一個範例中自訂控制項所傳送的通知訊息。

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;
}

某些通知主要是在 API 中長時間傳送的通知,會以 WM_COMMAND 訊息的形式傳送。 如需詳細資訊,請參閱 控制訊息

如果訊息處理常式位於對話方塊程式中,您必須使用 SetWindowLong 函式搭配 DWL_MSGRESULT 來設定傳回值。

對於 Windows Vista 和更新版本系統,無法在進程之間傳送 WM_NOTIFY 訊息。

許多通知都提供 ANSI 和 Unicode 格式。 傳送 WM_NOTIFY 訊息的視窗會使用 WM_NOTIFYFORMAT 訊息來判斷應該使用的格式。 如需進一步的討論 ,請參閱WM_NOTIFYFORMAT

規格需求

需求
最低支援的用戶端
Windows Vista [僅限傳統型應用程式]
最低支援的伺服器
Windows Server 2003 [僅限桌面應用程式]
標頭
Winuser.h

另請參閱

WM_NOTIFYFORMAT