
現在visualC++6.0で遠隔地の映像を送受信するためのカノープスというサンプルプログラムをもとに、プログラムを作成しています。
そこでマウスの移動範囲を限定するにはどうすればいいでしょうか?
MFC App wizardを使っており、ClipCursou関数を用いればできるようなことをネットで調べ見たのですがどのように使えばいいのかわかりません。
またClipcursor関数のようなAPI関数は、MFCで使うことができるのでしょうか?
実際に実現したいことは、メニュー画面のボタンをクリックしたらマウスの移動範囲を画面の上半分に限定、またはプログラムを実行した地点でマウス移動範囲を画面の上半分に限定できたらいいと思っています。
プログラムに関しては素人なので説明の至らない点もあると思いますが、どうかよろしくお願いします。
No.1ベストアンサー
- 回答日時:
★調べたとおりの 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 …
この回答への補足
参考文献まで載せていただきわかりやすいご回答どうもありがとうございました。この意見を参考にプログラムを作成してみます。
一つだけ質問なのですが・・・
>マウスが移動できる範囲内で元に戻すボタンか何かを設置します。
これは具体的にはどのようなことを行えばいいのでしょうか??
もしよろしければ教えていただきたいです。
No.3
- 回答日時:
★画面の上半分ですよね。
・それならデスクトップ画面の長方形領域を 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) が画面領域の高さです。
・以上。
ご回答どうもありがとうございました。
うまくプログラムが動きできました。
今後ともいろいろと質問することがあると思いますが、その時はまたよかったら協力してください。
本当にありがとうございました。
No.2
- 回答日時:
★補足要求。
>これは具体的にはどのようなことを行えばいいのでしょうか??
↑
マウスの移動範囲をスクリーン画面の上半分に限定するのなら、何時どうやってそれを解除するの?
マウスの移動範囲を解除出来ないとプログラムを終了するのに『Alt+F4』キーで行ったりする事に
なります。それとタスクトレイに常駐するプログラムですか?
・逆に質問です。
マウスの移動範囲を限定した後の処理はどう考えているのですか?
ずっと移動範囲を限定したままですか?
パソコンを終了するのにもマウスでスタートメニューへ移動しないといけませんから
終了するときの事も考えて置かないといけません。
前回の回答で『戻すための手段』とは終了時の事をきちんと考えてという意味です。
・どうなんでしょうか?その辺。
マウス移動の範囲解除などは。
この回答への補足
>タスクトレイに常駐するプログラムですか?
タスクトレイに常駐するプログラムではありません。
>マウスの移動範囲を限定した後の処理はどう考えているのですか?
ずっと移動範囲を限定したままですか?
マウスの移動範囲を限定した後は、左クリックである動作を行うようなプログラムを書いています。実際にはこの左クリックでの動作をマウスの移動範囲を限定して行いたいと考えています。移動範囲を解除はプログラム終了で終わらせて構いません。
すいません。僕の知識不足で説明が足りない点、へたくそな部分もあると思いますがよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
閉図形の座標の配列が右回りか...
-
マインクラフト(pc版)で座標...
-
直線を描画するプログラム
-
プログラム
-
多角形の座標を定義
-
エクセルシート上のマウスポイ...
-
線分同士の交点の判定
-
黒体放射軌跡のxy色度座標への...
-
OpenGLの「見える範囲」は何故...
-
OpenCvSharp4による画像判定解...
-
「アイテムは収集されました」...
-
Minecraft 統合版(PC)の描画距...
-
エクセルで作った新しいウイン...
-
勝手にウィンドウが開いて止ま...
-
エクセルのコントロールツール...
-
メッセージボックスを大きくす...
-
コンテキスト依存とは?
-
D3DXCreateFontとID3DXFont::Dr...
-
他のウィンドウのボタンを自動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
c言語でキーボードから2点の座...
-
3次元空間上の2つの座標から...
-
ワード上Shapeの位置情報を統一...
-
シーケンサー(PLC?)で制...
-
多角形の内部かどうか判定する方法
-
Excel VBA で自在に図形を変化...
-
ガウシアンフィルタのCプログラム
-
エクセルで回転する座標の出し方
-
エクセルである点からの距離で...
-
選択範囲の座標値の抽出
-
ダイアログ内コントロールの位...
-
y=x^2の座標をプロットするプロ...
-
有限要素法について教えてください
-
有限要素法(FEM)について教え...
-
C言語 配列で座標
-
PanelとCanvasの違いについて
-
タッチパッドのタッチ座標取得
-
アクセスのセルの数え方。
おすすめ情報