共用方式為


從通用控制項接收告知

通用控制項是當控制項中發生事件時 (例如來自使用者的輸入) 傳送通知訊息給父視窗的子視窗。

應用程式仰賴這些通知訊息來判斷使用者要其採取的動作。 最常見的控制項會將通知訊息傳送為WM_NOTIFY訊息。 Windows 控制項會將大部分的通知訊息傳送為WM_COMMAND訊息。 CWnd::OnNotify 是WM_NOTIFY訊息的處理常式。 如同使用 CWnd::OnCommandOnNotify 的實作會分派通知訊息至 OnCmdMsg 供在訊息對應中處理。 處理通知的訊息對應專案ON_NOTIFY。 如需詳細資訊,請參閱 技術附注 61:ON_NOTIFY和WM_NOTIFY訊息

或者,衍生類別可以使用「訊息反映」來處理自己的通知訊息。如需詳細資訊,請參閱 技術附注 62:Windows 控制項 的訊息反思。

擷取通知訊息中的游標位置

有時候,當通用控制項收到特定通知訊息時,決定游標的目前位置會很有用。 例如,當一般控制項收到NM_RCLICK通知訊息時,判斷目前的資料指標位置會很有説明。

有一簡單方式可透過呼叫 CWnd::GetCurrentMessage來完成此項。 不過,這個方法只有在訊息送出時才會擷取游標位置。 因為資料指標可能已經移動,因為訊息已傳送,因此您必須呼叫 CWnd::GetCursorPos 以取得目前的資料指標位置。

注意

您應該只在訊息處理常式內呼叫 CWnd::GetCurrentMessage

將下列程式碼新增至通知訊息處理常式的本文(在此範例中,NM_RCLICK):

CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;

此時,滑鼠游標位置是儲存在 cursorPos 物件中。

另請參閱

建立及使用控制項
Controls