コモン コントロールからの通知の受信
コモン コントロールはユーザー入力などのイベントは、コントロールに発生する、親ウィンドウに通知メッセージを送信子ウィンドウです。
アプリケーションでこれらの通知メッセージに対処する場合にユーザーにするかを特定します。 最も一般的なコントロールは 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 オブジェクトに格納されます。