- ベストアンサー
画面の範囲選択
お世話になります。 visual basicでマウスでデスクトップ上をドラックして範囲選択する操作を フォーム上の操作で可能なのでしょうか? 例えば、画面の左上1/4を選択することを画面の座標を入力することで行いたいのですが…。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
『画像表示部分』がウィンドウであれば、[WindowFromPoint]APIでウィンドウハンドルを取得することができそうです。 ウィンドウハンドルさえ取得すれば、位置やサイズは取得できます。 ざっとUI(及び操作)を考えると ピクチャボックスなどを配置してその上でマウスボタンを押下する(カーソル形状を変更する) 対象のウィンドウまで、マウスボタンを押下したままカーソルを移動(ドラッグ:ユーザの操作) 対象のウィンドウ上でマウスボタンを離す(ユーザの操作)、MouseUpイベントが発生する。その際のX,Y(相対座標)から絶対座標へ変換して、WindowFromPointを利用して対象のウィンドウハンドル取得 などですね。 もし最終的にやりたいことが、『MediaPlayerで再生されているムービーをキャプチャしたい』ということであれば、DirectXの関係などでキャプチャ不可能な環境の方が多いですよ。
その他の回答 (2)
- BellBell
- ベストアンサー率54% (327/598)
『デスクトップ上を』という事なので生半可な方法では不可能です。 画面いっぱいに表示した枠無しフォームを用意する。 デスクトップのスクリーンショットを取って、フォームに表示させる。 その上でマウスドラッグなりさせて範囲を指定させる。 不必要になったらすぐにフォームを非表示(アンロード)させる。 上の方法で操作上問題ない、及び目的に適うならば比較的簡単に実現できます。
補足
BellBell様、早速の御回答ありがとうございます。 わたしの説明不足で申し訳なかったのですが、 「デスクトップ上を…」というよりは、MediaPlayer等の動 画再生ソフトの画像表示部分をマウスドラッグによって範囲選択する操作をワンタッチで行いたいのですが・・・。 お手数ですが、よろしくお願いいたします。
- VT250F
- ベストアンサー率30% (26/84)
可能ですよ。 フォームのマウスダウン、マウスムーブ、マウスアップの イベントにX、Y座標がありますので、それを使って 例えば点線の四角形(フレームコントロール)の 大きさを制御し、 四角形の中に物があるかどうかで判定します。 座標を入力して・・・と言うのはこれを応用して下さい。 まずは、debug.print x,y 等として、 値がどう変化するか、イミディエイト画面に表示してみましょう。
補足
早速の御回答ありがとうございます。 BellBell様への補足にも書いたのですが、 マウスダウン等のイベントによって、 動画再生ソフトの動画部分を選択できるということで よろしかったでしょうか? まだ手探り段階で、試すことができなくて…。 お手数ですが、よろしくお願いいたします。
お礼
返事遅くなり大変申し訳ございません。 知らないことが多くてまだまだ勉強が必要そうです。 本当にありがとうございました。