重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

現在visualC++6.0で遠隔地の映像を送受信するためのカノープスというサンプルプログラムをもとに、プログラムを作成しています。
そこでマウスの移動範囲を限定するにはどうすればいいでしょうか?
MFC App wizardを使っており、ClipCursou関数を用いればできるようなことをネットで調べ見たのですがどのように使えばいいのかわかりません。
またClipcursor関数のようなAPI関数は、MFCで使うことができるのでしょうか?
実際に実現したいことは、メニュー画面のボタンをクリックしたらマウスの移動範囲を画面の上半分に限定、またはプログラムを実行した地点でマウス移動範囲を画面の上半分に限定できたらいいと思っています。
プログラムに関しては素人なので説明の至らない点もあると思いますが、どうかよろしくお願いします。

A 回答 (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 …
http://msdn.microsoft.com/library/ja/default.asp …
http://msdn.microsoft.com/library/ja/default.asp …

この回答への補足

参考文献まで載せていただきわかりやすいご回答どうもありがとうございました。この意見を参考にプログラムを作成してみます。

一つだけ質問なのですが・・・

>マウスが移動できる範囲内で元に戻すボタンか何かを設置します。
これは具体的にはどのようなことを行えばいいのでしょうか??

もしよろしければ教えていただきたいです。

補足日時:2007/08/23 14:35
    • good
    • 0

★画面の上半分ですよね。


・それならデスクトップ画面の長方形領域を 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) が画面領域の高さです。
・以上。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございました。
うまくプログラムが動きできました。

今後ともいろいろと質問することがあると思いますが、その時はまたよかったら協力してください。
本当にありがとうございました。

お礼日時:2007/09/03 10:18

★補足要求。


>これは具体的にはどのようなことを行えばいいのでしょうか??
 ↑
 マウスの移動範囲をスクリーン画面の上半分に限定するのなら、何時どうやってそれを解除するの?
 マウスの移動範囲を解除出来ないとプログラムを終了するのに『Alt+F4』キーで行ったりする事に
 なります。それとタスクトレイに常駐するプログラムですか?
・逆に質問です。
 マウスの移動範囲を限定した後の処理はどう考えているのですか?
 ずっと移動範囲を限定したままですか?
 パソコンを終了するのにもマウスでスタートメニューへ移動しないといけませんから
 終了するときの事も考えて置かないといけません。
 前回の回答で『戻すための手段』とは終了時の事をきちんと考えてという意味です。
・どうなんでしょうか?その辺。
 マウス移動の範囲解除などは。

この回答への補足

>タスクトレイに常駐するプログラムですか?
タスクトレイに常駐するプログラムではありません。

>マウスの移動範囲を限定した後の処理はどう考えているのですか?
 ずっと移動範囲を限定したままですか?
マウスの移動範囲を限定した後は、左クリックである動作を行うようなプログラムを書いています。実際にはこの左クリックでの動作をマウスの移動範囲を限定して行いたいと考えています。移動範囲を解除はプログラム終了で終わらせて構いません。

すいません。僕の知識不足で説明が足りない点、へたくそな部分もあると思いますがよろしくお願い致します。

補足日時:2007/08/29 18:03
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!