| 1 2 3 |
|
21: お名前:中 博俊
|
|
|
2004/11/26 23:34:39 |
|
|
背景のBMPを拾ってきて自前で描画するっていうことかな?
|
|
22: お名前:渋木宏明(ひどり)
|
|
|
2004/11/27 0:00:26 |
|
|
WS_EX_TRANSPARENT にしておいて、透明にしたいところを、後ろにいるウィンドウ(デスクトップだったかな?)に描画させるんだったと思う。
|
|
23: お名前:Jumbo
|
|
|
2004/11/27 16:12:23 |
|
|
WS_EX_TRANSPARENTについて検索中...
あった...
「ウィンドウ作成直後は確かに透過ウィンドウとなり、ウィンドウの背景にある画像が表示されます。しかしこのスタイルで作成したウィンドウは、ウィンドウの移動をすると、背景も一緒に移動してしまいます。」
とあります。ウィンドウを作成したときのバックが背景となるって事ですよね、きっと。ん~どう使えば良いのでろう???
|
|
24: お名前:渋木宏明(ひどり)
|
|
|
2004/11/27 22:49:52 |
|
|
>ウィンドウを作成したときのバックが背景となるって事ですよね、
そです。
>ん~どう使えば良いのでろう???
だから、「透けさせたい箇所」を無効領域だってことにして、自分の後ろにいるウィンドウに描画させてやるんだったと思います。
# 具体的には、InvalidateRgn() して UpdateWindow() のはず。
太古の技術なので、インターネット検索で見つけるのは難しいかも。
前にも書きましたが、大昔のデスクトップアクセサリなんかで使われていた手法なので、その辺のソースが発見できれば参考になるかもしれないです。
|
|
25: お名前:Jumbo
|
|
|
2004/11/29 16:54:20 |
|
|
SetWindowLongでWS_EX_TRANSPARENTを指定して、Invalidateメソッドを呼び出してみましたが、思う通りの結果になってくれませんでした...
透過しようとがんばってるみたいですが、透過されません。タイトルバーなど潰されてしまいます。
やっぱりAPIでごり押しするのは無理なようです。
|
|
26: お名前:渋木宏明(ひどり)
|
|
|
2004/11/29 17:03:48 |
|
|
上書きして欲しくないところは無効リージョンから取り除かなくちゃ駄目すよ。
なので、Invalidate() じゃなくて InvalidateRgn() するんです。(後ろにいるウィンドウに対して)
|
|
27: お名前:Jumbo
|
|
|
2004/11/29 17:49:04 |
|
|
まずは透過されることを確認しようと思ってウィンドウ全体に対して行ったつもりだったんですが...
InvalidateはAPIではなくMe.Invalidateでやってるんですが、まずかったですかね?
|
|
28: お名前:渋木宏明(ひどり)
|
|
|
2004/11/29 20:14:34 |
|
|
WS_EX_TRANSPARENT なウィンドウに対して Invalidate しても、それこそ何も起きないのでは。。。
|
|
29: お名前:渋木宏明(ひどり)
|
|
|
2004/11/29 21:58:35 |
|
|
今ちょっと試してみたんですが、WS_EX_TRANSPARENT を設定すると、キャプションバーやウィンドウの「ふち」まで再描画されなくなっちゃいますね。。。
|
|
30: お名前:Rdzalayu
|
|
|
2011/06/01 21:25:44 |
|
|
duvall florida school district,
|
| 1 2 3 |