次の方法で共有


コモン コントロールからの通知の受信

コモン コントロールは、ユーザーからの入力のようなイベントが、コントロールに発生すると親ウィンドウに通知メッセージを送信する子ウィンドウです。

アプリケーションは、これらの通知メッセージにアクションを行いますが、ユーザーに表示するかを判断するために依存します。ほとんどのコモン コントロールは WM_NOTIFY のメッセージとして通知メッセージを送信します。ウィンドウ コントロールは WM_COMMAND のメッセージとしてほとんどの通知メッセージを送信します。CWnd::OnNotifyWM_NOTIFY のメッセージのハンドラーです。CWnd::OnCommandと同様に、 OnNotify の実装は、メッセージ マップの処理の OnCmdMsg に通知メッセージをディスパッチします。通知を処理するメッセージマップ エントリは ON_NOTIFYです。詳細については、 テクニカル ノート 61: ON_NOTIFY と WM_NOTIFY のメッセージを参照してください。

また、派生クラスは 「メッセージ リフレクションを使用して独自の通知メッセージを処理できます」。詳細については、 テクニカル ノート 62: ウィンドウ コントロールのリフレクション メッセージを参照してください。

通知メッセージのカーソル位置の検索

場合によっては、特定の通知メッセージがコモン コントロールが受信すると、カーソルの現在の位置を特定できると便利です。たとえばコモン コントロールが NM_RCLICK の通知メッセージを受け取ると、現在のカーソル位置を特定できると便利です。

CWnd::GetCurrentMessageを呼び出すことにより実現する簡単な方法があります。ただし、このメソッドは、メッセージが送信された場合のみカーソル位置を取得します。メッセージが送信ため、カーソルが移動する場合があるため、現在のカーソル位置を取得するに CWnd::GetCursorPos をダイヤルします。

[!メモ]

CWnd::GetCurrentMessage は、メッセージ ハンドラー内でのみ呼び出す必要はありません。

通知メッセージ ハンドラーの本体に、次のコードを追加します (この例では NM_RCLICK):

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

この時点で、マウス カーソル位置は cursorPos オブジェクトに格納されます。

参照

関連項目

コントロールの作成方法と使い方

概念

コントロール (MFC)