Kaze-Gumi

日記

2008-09-21-01(日)

パネルを前面に出したり、半透明にさせてみたり

前回までのtestpanelラベルの続きで

testpanelAlphaTransparency 200
testpanelAlwaysOnTop true

「AlphaTransparency」は半透明表示の設定で、0〜255の値を指定する
0で完全に見えなくなり、255が通常の半透明なし状態
Win9x系では動かないらしい
半透明は、それほど全体の動作に負荷はかからないと思う。たぶん

ただ薄すぎると見えにくくなる(逆に非アクティブ時に値を下げるとかに使えるが)
xPaintClassにも半透明設定があるっぽいが、xLabel自体にも続けて設定が存在するっぽい
たぶん、専用の!Bangの関係なんだろう

!labelSetAlpha testpanel 200

このように!Bangでダイレクトに変更もできるので
どこかにこれを呼び出すパーツ(ポップアップだとかホットキーだとか)を仕込んで
切り替えられるようにするといい
こういうときに「AddToGroup」でグループ化しておけば
親グループの「AlphaTransparency」をいじるだけで、全部に適用されて便利

常に手前に表示は「AlwaysOnTop」をtrueにする
ヘルプを眺めている限り、これは、xPaintClassの範囲外っぽい
それぞれのモジュール側で対応してるのかな
元々、常に手前はどの表示系モジュールでもついてること多いので困らないが

ただ、この「AlwaysOnTop」は、たまにうまく機能しないことがある
起動時の描画タイミングの問題で前にこないときは、!Recycleしたら戻ったりする
また、xLabel同士の窓オーダーはラベルを作成した順番に影響するので
*lableで作るときの順序をいじったりしたらうまくいったりする
zOrderに関しては長年開発者も苦労してるようだ

「AlwaysOnTop」も、!Bangでコントロールできる

!labelAlwaysOnTop testpanel true
!labelAlwaysOnTop testpanel false

・zOrder
testpanelWindowzOrder true

「WindowzOrder」をtrueにすると、そのラベルは他の窓と同じように
フォーカスが当たったら前にきて、失ったら後にいくようになる
要は、普通のウインドウ振る舞いと同じになるということ
ただし、alwaysontopじゃない状態での話
確か、デフォルトでtrueだったと思う

testpanelBehindWindow "ClassName" "WindowName"
「BehindWindow」は、いまいちよくわからない
指定した窓クラスより前にこない設定だと思う
クリックしたら前にくるけどあるラベルよりも
前に出したくないとかいうときに使ったり

classname、windownameはwinspyとか使ったら調べられる

Relay Keyword's Recent Title

Recent Images

img-03img-02img-01img-01img-01img-01img-02img-01img-02img-01

Prev: とりあえずxLabelでパネルっぽいものを作ってみる | Next: パネルを動かしてみたり | 2008-09-21 | 2008-09 | 2008 | RSS | 最新の日記