WM_NOTIFY メッセージ

イベントが発生したとき、またはコントロールに何らかの情報が必要な場合に、共通コントロールによって親ウィンドウに送信されます。

パラメーター

wParam

メッセージを送信する共通コントロールの識別子。 この識別子は一意であるとは限りません。 アプリケーションでは、NMHDR 構造体の hwndFrom メンバーまたは idFrom メンバー (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 [デスクトップ アプリのみ]
Header
Winuser.h

関連項目

WM_NOTIFYFORMAT