- PR -

コントロールを透明にしても有効

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2008-04-26 16:32
コントロールを透明にします。
やり方は2通りあると思います。
・Opacityを0にする
・SetStyle(ControlStyles.SupportsTransparentBackColor, true);
 this.BackColor = Color.Transparent;
このどちらとも、まあ当然なのだとは思いますが
透明のとこの上でクリックしてもイベントを拾いません。
というかないことになってます。

透明にしてもマウスイベントなどを拾うようにするにはどうしたらよいか
ご存知の方教えて頂けるとありがたいです。
Azulean
大ベテラン
会議室デビュー日: 2008/01/04
投稿数: 123
お住まい・勤務地: 大阪府
投稿日時: 2008-04-26 23:56
引用:

透明にしてもマウスイベントなどを拾うようにするにはどうしたらよいか
ご存知の方教えて頂けるとありがたいです。


無理でしょう。
どうしてもやりたいならマウスフックを仕掛ければ実現できるかもしれませんが、マウス”イベント”ではなくなります。

どちらかというと透明度1%で微妙に半透明がお手軽かもしれません。
#但し、オーバーレイが映らなくなる問題はあります。
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2008-04-27 00:02
Azuleanさん。毎度ありがとうございます。
無理ですか。やっぱりかという感じです。
ふーん。別の方法を考えます。
taku2888
会議室デビュー日: 2008/03/13
投稿数: 6
投稿日時: 2008-04-27 02:11
ボタン風なクリックイベントぐらいなら、
透明のlabelで、カーソルをHandに変えれば可能かと。
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2008-04-27 02:25
taku2888さんアドバイスありがとうございます。
自分なりに色々と調べてみたら
SetCaptureというコントロール外のマウスの挙動を
拾うものがあるらしいのですが
僕はC#で組んでいて他の言語のやり方ならそこそこ
参考文献が見つかるのですが
C#でとなるとうまくみつかりません。

ご存知であれば教えて頂けるとありがたいです。
Azulean
大ベテラン
会議室デビュー日: 2008/01/04
投稿数: 123
お住まい・勤務地: 大阪府
投稿日時: 2008-04-27 10:08
引用:

SetCaptureというコントロール外のマウスの挙動を
拾うものがあるらしいのですが
僕はC#で組んでいて他の言語のやり方ならそこそこ参考文献が見つかるのですが
C#でとなるとうまくみつかりません。


SetCaptureはFormにあるCaptureプロパティとほぼ同じです。

しかし、SetCaptureもCaptureもマウスのボタンが押されている状態、すなわちドラッグしている状態じゃないとうまくかかりません。
例えば、マウスのボタンがいずれも押されていないときにSetCapture/Captureしてもマウスの移動は捕捉できません。

実現する方法としては次のサイトにもありますように、WH_MOUSE_LLでやるしかないかなと思われます。
(次のサイト自体が分かりにくければ、WH_MOUSE_LLで検索してみて下さい)
http://support.microsoft.com/kb/318804
taku2888
会議室デビュー日: 2008/03/13
投稿数: 6
投稿日時: 2008-04-27 17:37
どういったことがしたいのか不明なので何とも言えませんが、

> 透明にしてもマウスイベントなどを拾うようにするにはどうしたらよいか
> ご存知の方教えて頂けるとありがたいです。

透明のコントロールでイベントを取るわけですよね。
透明のラベルで取れないイベントなのでしょうか。
イベントの追加でMouseMoveも普通にとれますが。

それとも、アプリのForm外の話でしょうか。
それなら、C++等でDLL作った方が早いですが。
未記入
大ベテラン
会議室デビュー日: 2005/08/25
投稿数: 145
投稿日時: 2008-04-28 23:13
Azulean,taku2888さん。アドバイスありがとうございます。
ためさせて頂きます。
1

スキルアップ/キャリアアップ(JOB@IT)