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