人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

[【VB6】Formがクリックされた時のイベントを拾い座標を取得したい!]

VB6でメインフォームと、その上に表示する透過フォームを作成しました。
透過フォームには、メインフォームに対するオプションのような表示を行います。

この透過フォームの一部(透過の部分)をクリックしたときに座標を取得する処理を
造る必要がでてきたのですが、どのようにすれば実現できますか?

※質問者は以下の方法で試してみましたが、実現できませんでした。

?Visible = falseのコントロールを配置し、コントロールがクリックされた
時のメソッドを待つ→falseにしたところ、イベントが発生しなくなったためNG

アドバイスよろしくお願いします。


●質問者: harunoharuno
●カテゴリ:コンピュータ
✍キーワード:NG vb6 アドバイス イベント オプション
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● doxas
●100ポイント ベストアンサー

透過フォームというのが何をさしているのかにもよりますが……たとえば単にクリックされた座標を拾いたいだけであれば、ラベルなどのコントロールを用いたほうが簡単に実現できるとは思います。


ラベルには、BackStyle というプロパティがあります。

このプロパティを fmBackStyleTransparent に設定することで、Visible プロパティを変更することなく、完全に透明なラベルを配置することが可能になります。ラベル自体は見えなくても存在していますので、クリックイベントは普通に発生します。

以下のサイトなどをご参考になさるとよろしいかと。

Excel Gamer - Shadow Slash Chapter.98 [ クリックゲーム3:クリック座標検知 ]

◎質問者からの返答

回答ありがとうございました。

今回は(その他の原因かもしれませんがおそらく)

http://hanatyan.sakura.ne.jp/patio/read.cgi?no=90

に記載されている方法で透明にしているので

LabelのCaption部分

がクリックされたときしかイベントが発生しないようでした。

なのでCaptionがないときはイベントを拾うことができませんでした。


2 ● きゃづみぃ
●90ポイント

マウスのmoveイベントで常にマウスの座標を取得し、クリック時のイベントで その最後に取得した座標にすればいいかと思います。

http://ziddy.japan.zdnet.com/qa1981749.html?order=DESC&by=dateti...

◎質問者からの返答

回答ありがとうございます、、、

しかし、下記HPを参考に透明なフォームを作成されたところ

Moveイベントを取得できなくなるようです。

透明なフォームをあきらめるしかないのか・・・

http://hanatyan.sakura.ne.jp/patio/read.cgi?no=90


3 ● きゃづみぃ
●80ポイント

http://hanatyan.sakura.ne.jp/vbhlp/ibe_Mouse.htm

マウスが 画面上のどこにあるのか座標を取得し、フォームの位置から割り出すというのは どうでしょうか?

◎質問者からの返答

マウスがダイアログの上にあるときのイベントは拾うことが出来ませんでした。

タイマー関係のイベントを使えば、Windowsの画面上どこにカーソルが存在するか分かるかもしれませんが、今回そこまではしたくなかったためあきらめました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ