通常マウスがウインドウ範囲内にあるときだけマウスのメッセージがそのウインドウに送られます。
ウインドウ範囲外でもマウスのメッセージを受け取るには次の手順で行います。(戻る)
- マウス・キャプチャの設定(SetCapture)
- ウインドウ範囲外でもマウス・メッセージを受け取れる。(マウス処理)
- マウス・キャプチャの解除(ReleaseCapture)
その他にもマウスがキャプチャされてるかどうかを GetCapture 関数で調べることができます。
プロトタイプ宣言
HWND SetCapture( HWND hWnd // ウインドウのハンドル ); BOOL ReleaseCapture( VOID ); HWND GetCapture( VOID );
使い方
// マウス・キャプチャの設定 SetCapture( hWnd ); // マウス・キャプチャの解除 ReleaseCapture(); // マウス・キャプチャの取得 hWnd = GetCapture(); // マウス・キャプチャの調査 if ( GetCapture() != NULL ){ MessageBox( hWnd, TEXT("マウス・キャプチャされてます。"), TEXT("確認"), MB_OK ); } else{ MessageBox( hWnd, TEXT("マウス・キャプチャされてません。"), TEXT("確認"), MB_OK ); }
- hWnd がウインドウ・ハンドルです。
- この関数群を使うことで独自にマウス・ドラッグの処理を実装できます。
- 他にもマウスの座標をウインドウ外でも受け取れるようになります。
関連記事
- マウス座標の取得/設定
- マウス移動範囲の取得/設定/解除
- マウス・キャプチャの取得/設定/解除
※コメント投稿者のブログIDはブログ作成者のみに通知されます