ホーム
|
アプリケーション | Tips | ダウンロード | プログラム
| コラム

CBアプリ工房


Tips >   

ClipCursor でマウス移動を制限 

更新 : 2011/03/19

 


解説:
マウスをアプリケーションのウィンドウ(フォーム)から外に移動させたくない時、どうすればよいでしょう? 
Win32API の関数に ClipCursor があります。この関数は、マウスの移動範囲を指定された長方形内に制限します。

今回は、この関数を使って、フォームからマウスを外に移動できなくしてみます。

ちょっと寄り道:
ClipCursor 関数には以下の引数を渡します。

BOOL ClipCursor(
    CONST RECT *lpRect // 画面の座標
);

アプリケーション終了時は、制御を他のアプリケーションに渡すため、引数に NULL を指定します。範囲制限は、アプリケーションが終了しても解除されません。解除を忘れないでください。

使用例:
アプリケーションを起動すると、フォームから外にマウスが移動できなくなります。Button1 をクリックするかフォームを移動すると制限が解除されます。

準備としては Button1 を適当に配置するだけです。

アプリケーションの起動時、OnActivate イベントハンドラで ClipCursor 関数にフォームエリアの情報を渡します。マウスは、フォーム外に移動できなくなります。

Button1 のクリックで、ClipCursor に NULL を渡しています。
その後フォームを閉じます。

//-------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
    // 移動やリサイズで解除される。
    // 制限するには、同じコードを OnResize などに書く。
    RECT area = BoundsRect;
    ClipCursor(&area);
}
//-------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // 制限の解除
    ClipCursor(NULL);

    Close();
}
//-------------------------------------------------------------------
 



[ ホーム | ページトップ | ブック | リンク | サイトマップ ]
Copyright(c) 2003 Shibu All rights reserved.