- ベストアンサー
マウスの移動範囲を限定するには?(Clipcursor関数)
- 現在Visual C++ 6.0で遠隔地の映像を送受信するためのカノープスというサンプルプログラムをもとに、マウスの移動範囲を限定する方法を教えてください。
- MFC App WizardとClipCursor関数を使い、メニュー画面のボタンをクリックしたらマウスの移動範囲を画面の上半分に限定することができます。
- ClipCursor関数はMFCでも使用することができます。具体的な使い方については、質問に記載されたサンプルプログラムや関連のドキュメントを参考にしてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
★調べたとおりの ClipCursor() で行えます。 >またClipcursor関数のようなAPI関数は、MFCで使うことができるのでしょうか? ↑ RECT rc; rc.left = 左上隅のX座標 rc.top = 左上隅のY座標 rc.right = 右下隅のX座標 rc.bottom = 右下隅のY座標 ::ClipCursor( &rc ); ↑ これを付ける。→『スコープ解決演算子』 >実際に実現したいことは、メニュー画面のボタンをクリックしたらマウスの移動範囲を画面の上半分に限定、 >またはプログラムを実行した地点でマウス移動範囲を画面の上半分に限定できたらいいと思っています。 ↑ 移動可能な長方形領域(スクリーン座標)を RECT 構造体にセット。 その後に ClipCursor() API 関数などを実行すれば良いだけ。 ・注意点は一度実行したら元の移動範囲に戻すための手段をきちんと作ります。 マウスが移動できる範囲内で元に戻すボタンか何かを設置します。 あとプログラムが終了する前に必ず ClipCursor( NULL ); として元に戻します。 ・以上。 参考文献: ・http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_clipcursor.asp ・http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpgdi/html/_win32_clienttoscreen.asp ・http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpgdi/html/_win32_screentoclient.asp
その他の回答 (2)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★画面の上半分ですよね。 ・それならデスクトップ画面の長方形領域を SystemParametersInfo() API関数で取得。 その後に画面を上半分にセットしてから ClipCursor() API関数を呼べばよい。 下にサンプルを載せておきますのでテストして下さい。 サンプル: RECT rc; SystemParametersInfo( SPI_GETWORKAREA, 0, &rc, 0 ); rc.bottom = ((rc.bottom - rc.top) / 2 + rc.top); ClipCursor( &rc ); その他: ・画面の上半分の計算がちょっと複雑ですが rc.bottom = ((rc.bottom - rc.top) / 2 + rc.top); とまります。(rc.bottom - rc.top) が画面領域の高さです。 ・以上。
お礼
ご回答どうもありがとうございました。 うまくプログラムが動きできました。 今後ともいろいろと質問することがあると思いますが、その時はまたよかったら協力してください。 本当にありがとうございました。
- Oh-Orange
- ベストアンサー率63% (854/1345)
★補足要求。 >これは具体的にはどのようなことを行えばいいのでしょうか?? ↑ マウスの移動範囲をスクリーン画面の上半分に限定するのなら、何時どうやってそれを解除するの? マウスの移動範囲を解除出来ないとプログラムを終了するのに『Alt+F4』キーで行ったりする事に なります。それとタスクトレイに常駐するプログラムですか? ・逆に質問です。 マウスの移動範囲を限定した後の処理はどう考えているのですか? ずっと移動範囲を限定したままですか? パソコンを終了するのにもマウスでスタートメニューへ移動しないといけませんから 終了するときの事も考えて置かないといけません。 前回の回答で『戻すための手段』とは終了時の事をきちんと考えてという意味です。 ・どうなんでしょうか?その辺。 マウス移動の範囲解除などは。
補足
>タスクトレイに常駐するプログラムですか? タスクトレイに常駐するプログラムではありません。 >マウスの移動範囲を限定した後の処理はどう考えているのですか? ずっと移動範囲を限定したままですか? マウスの移動範囲を限定した後は、左クリックである動作を行うようなプログラムを書いています。実際にはこの左クリックでの動作をマウスの移動範囲を限定して行いたいと考えています。移動範囲を解除はプログラム終了で終わらせて構いません。 すいません。僕の知識不足で説明が足りない点、へたくそな部分もあると思いますがよろしくお願い致します。
補足
参考文献まで載せていただきわかりやすいご回答どうもありがとうございました。この意見を参考にプログラムを作成してみます。 一つだけ質問なのですが・・・ >マウスが移動できる範囲内で元に戻すボタンか何かを設置します。 これは具体的にはどのようなことを行えばいいのでしょうか?? もしよろしければ教えていただきたいです。