標準的なマウスの処理を説明します。
マウスの処理は CWnd クラスがサポートしています。また、ClassWizardに登録されて
いますので簡単にイベントメッセージを設定できます。
【マウス処理用メッセージ】
マウスでクリックすると発行される基本的なメッセージを示します。
| メッセージ | 関数 | 操作 |
| WM_LBUTTONDOWN | OnLButtonDown | 左クリック時 |
| WM_LBUTTONUP | OnLButtonUp | 左クリックしてボタンを離した時 |
| WM_LBUTTONDBLCLK | OnLButtonDblClk | 左ダブルクリック |
| WM_RBUTTONDOWN | OnRButtonDown | 右クリック |
| WM_RBUTTONUP | OnRButtonUp | 右クリックしてボタンを離した時 |
| WM_RBUTTONDBLCLK | OnRButtonDblClk | 右ダブルクリック |
| WM_MOUSEMOVE | OnMouseMove | マウスをドラッグ |
【使用例】
上記メッセージ関数の引数はすべて同様のものです。
では、OnLButtonDownを例にとって説明します。
[書式]
void xxx::OnLButtonDown(UNIT nFlags, CPoint point);
nFlags 押されたキー
point マウスのポイント位置(x,y)
[nFlags:押されたキー]
このフラグは、各種ビットにキーが割り振られたいます。
従って、押された各々のキーのビットが立ちますので
同時に複数キーが押された場合も、その検出が可能です。
マウス処理用定数
| 定数 | 値 | キー |
| MK_LBUTTON | 0x0001 | マウスの左ボタン |
| MK_RBUTTON | 0x0002 | マウスの右ボタン |
| MK_SHIFT | 0x0004 | 「Shift」キー |
| MK_CONTROL | 0x0008 | 「Ctrl」キー |
| MK_MBUTTON | 0x0010 | マウスの中央ボタン |
[point:マウスのポイント位置]
CPoint pointによりマウスのクリックされた位置を取得できます。
(x , y) = (point.x , point.y)
【マウスキャプチャ】
マウスは Windows の共有リソースであるため、処理中のアプリケーション( A )外で
クリックした場合の操作を( A )は取得することは出来きずクリックされた外の
アプリケーションが処理を受け取ることになります。しかし、このようなケースでの
処理を( A )が取得することを可能としたい場合あります。
たとえば、
( A )のデータを別のアプリケーションへマウスによりドラッグドロップする
などの時に、この処置が必要となります。
これを実現する手続きを「マウスキャプチャ」といいます。
「解説」
マウスカーソルの移動は、Windowsシステムが監視しています。
通常は、マウスのイベントが発生されるとマウスカーソルのある
アプリケーションに渡されます。
しかし、マウスキャプチャの設定がされているアプリケーションが
存在する場合は、設定されたアプリケーションにメッセージが渡される。
(注意)ただし、この設定は複数のアプリケーションにすることは出来ません。
[マウスキャプチャ用の関数]
CWnd::SetCapture();
この関数実行後、マウスカーソルの位置に関わらず実行された
アプリケーションにメッセージが送られます。
BOOL ReleaseCapture();
他のウィンドウがマウスメッセージを受け取れるようにする。
(この関数は、API関数です。)