從 [通用控制項接收通知
通用控制項是在控制項中發生的事件,例如,不讓使用者輸入時,傳送通知訊息到父視窗的子視窗。
應用程式會依賴這些告知訊息來決定使用者要它採取什麼動作。 最常見的控制項會傳送告知訊息中的,以 WM_NOTIFY 訊息。 Windows 控制項傳送大部分通知訊息中的,以 WM_COMMAND 訊息。 CWnd::OnNotify 為 WM_NOTIFY 訊息。 如同CWnd::OnCommand,實作OnNotify會通知訊息分派至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物件。