次の方法で共有


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

更新 : 2007 年 11 月

コモン コントロールは、ユーザーの入力などのイベントがコントロールで発生した場合に通知メッセージを親ウィンドウに送信する子ウィンドウです。

アプリケーションは、この通知メッセージに基づいてユーザーが必要とするアクションを判定します。ほとんどのコモン コントロールは、通知メッセージを WM_NOTIFY メッセージとして送信します。Windows コントロールは、ほとんどの通知メッセージを WM_COMMAND メッセージとして送信します。CWnd::OnNotifyWM_NOTIFY メッセージ用のハンドラです。CWnd::OnCommand では、OnNotify の実装は、メッセージ マップで処理するために通知メッセージを OnCmdMsg にディスパッチします。通知を処理するメッセージ マップ エントリは ON_NOTIFY です。詳細については、「テクニカル ノート 61: ON_NOTIFY メッセージと WM_NOTIFY メッセージ」を参照してください。

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

通知メッセージのカーソル位置の取得

場合によって、コモン コントロールが特定の通知メッセージを受信するときのカーソルの現在位置を確認しておくと役立ちます。たとえば、コモン コントロールが NM_RCLICK 通知メッセージを受信するときにカーソルの現在位置を確認しておくと便利です。

CWnd::GetCurrentMessage を呼び出すと、簡単にカーソルの現在位置を確認できます。ただし、このメソッドは、メッセージ送信時のカーソルの位置のみを取得します。メッセージの送信時にカーソルが移動している可能性があるので、CWnd::GetCursorPos を呼び出して現在のカーソル位置を取得します。

d72sstz8.alert_note(ja-jp,VS.90).gifメモ :

CWnd::GetCurrentMessage は、メッセージ ハンドラ内でのみ呼び出すことができます。

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

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

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

参照

概念

コントロール (MFC)

参照

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