tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルWS_EX_LAYEREDについて
記事No13700
投稿日: 2009/05/27(Wed) 16:18
投稿者シス
肉眼では見えるが、BitBltでは映らないウィンドウを作りたいと思っています

環境がVB6、Vistaなのですが
ウィンドウにWS_EX_LAYERED属性を指定すると、
透明なウィンドウとして認識されるはずなのですが、Vistaでは違うみたいなのです。

SetWindowLong
(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) Or WS_EX_TRANSPARENT)
このような感じで透明属性にしてます。
とするとXPではBitBltなどで映らなくなるのですが、
Vistaでは映ってしまいます。

Vistaでも映らないようにする方法はありませんでしょうか?
よろしくお願い致します。

[ツリー表示へ]
タイトルRe: WS_EX_LAYEREDについて
記事No13701
投稿日: 2009/05/27(Wed) 23:26
投稿者オショウ
> Vistaでも映らないようにする方法はありませんでしょうか?
> よろしくお願い致します。

  検索したらすぐにありました・・・

  http://hiragino.blog74.fc2.com/blog-entry-42.html

  C#ですが、基本はAPIで実現していますので、VB6に持っていける
  と思います。

※ もうVB2008 Express等にされては?

以上。

[ツリー表示へ]
タイトルRe: WS_EX_LAYEREDについて
記事No13702
投稿日: 2009/05/28(Thu) 00:34
投稿者オショウ
追伸
検索した結果・・・
サンプルが、WPFばかりなので純粋にAPI
のヘルプ読んでVB6に移植するのがよろしい
かと・・・

以上。

[ツリー表示へ]
タイトルRe^2: WS_EX_LAYEREDについて
記事No13703
投稿日: 2009/05/28(Thu) 01:30
投稿者シス
お返事ありがとうございます。

試してみました。グラス効果のウィンドウにはできるようになったのですが、
肉眼では見えるが、BitBltでは映らないウィンドウにはなりませんでした。

具体的にはどのAPIでそれが実現できるのでしょうか?
私が調べてもちょっとうまく出てこないです。

申し訳ありませんが、もう少し教えてください。
よろしくお願い致します。

[ツリー表示へ]
タイトルRe: WS_EX_LAYEREDについて
記事No13704
投稿日: 2009/05/28(Thu) 02:37
投稿者魔界の仮面弁士
デスクトップコンポジションを OFF にしてみるとどうでしょう?

[ツリー表示へ]
タイトルRe^2: WS_EX_LAYEREDについて
記事No13705
投稿日: 2009/05/28(Thu) 11:17
投稿者シス
あぁすごい!できました!
ありがとうございます!!

ただ「windowsの画面の配色を一時的…」という噴き出しが出たり、
Aeroが無効化されるのは悲しいですね。

これで開発を進めようと思いますが、
もし噴き出しを抑止できたり、Aeroを保ったまま実現する方法があったら教えてください
よろしくお願いします

[ツリー表示へ]