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 [僅限桌面應用程式] |
標頭 |
|