|
||
解説: マウスをアプリケーションのウィンドウ(フォーム)から外に移動させたくない時、どうすればよいでしょう? 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(); } //------------------------------------------------------------------- |