【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】

いつもお世話になっております。
VS2005を使ってWindowsアプリケーション作成を行っています。

ウィンドウの背景を半透明にしたいと思い、Webで調べたところ
setlayeredwindowattributes関数で半透明にできるとのことだったのですが、
VS2005で実行してもできませんでした。

VS2005でもウィンドウを半透明にすることはできるのでしょうか。
ご教授お願いいたします。

A 回答 (3件)

 こんばんは。



 http://msdn.microsoft.com/ja-jp/library/ms997507 …
 http://msdn.microsoft.com/ja-jp/library/cc411043 …

 SetLayeredWindowAttributes(hwnd, 0, 127, LWA_ALPHA);

 なのでは。

 因みに、

 SetLayeredWindowAttributes(hWnd, RGB(255, 255, 255), 0, LWA_COLORKEY);

 は、RGB(255, 255, 255)に該当する領域を半透過させます。透明レベルが0に設定されている為、ウィンドウが消えてしまったのでは。
 例えば、キャプションバーを持たない、真っ白なポップアップウィンドウならば、跡形もなく消えてしまいます。
 透明レベルは0~255ですが、127辺りで試せば、成功か否かは一目瞭然です。
    • good
    • 0
この回答へのお礼

早い補足回答ありがとうございます。
machongolaさんのおかげで自分のしたいように
ウィンドウを半透明にすることができました。

そこでまた疑問ができたのですが、
同じウィンドウ上の白い部分を透明に、黒い部分を半透明に
することは可能でしょうか。

SetLayeredWindowAttributes関数は第2引数と第3引数を選ぶようになっていて、
ウィンドウ全体を半透明にするか、指定した色を透明にするか
しかできないのでしょうか。

お礼日時:2010/01/15 23:23

 こんばんは。

御礼頂きました。
 どちらか一方しか出来ない、と言う事になります。
    • good
    • 0
この回答へのお礼

そうですか、ん~残念です。
早いご回答ありがとうございました。
おかげさまでC++勉強になりました。

お礼日時:2010/01/16 00:55

VS2005だとかは問題ではありません。


半透明Windowを作るのは可能です。

あなたが何の言語を利用しているのか分かりませんが、

参考までに、
C++ Win32APIでの実現方法
http://www.geocities.jp/ky_webid/win32c/060.html

C# .Netframeworkでの実現方法
http://www.atmarkit.co.jp/fdotnet/csharptips/004 …
    • good
    • 0
この回答へのお礼

早いご回答ありがとうございます。
説明不足ですいません。C++を利用しているため、
上記ホームページを参考にプログラムを改良いたしました。
----------------------------------------------------------
#define _WIN32_WINNT 0x0500
#include <windows.h>
 :
LONG exStyle = GetWindowLong(hWnd, GWL_EXSTYLE);
SetWindowLong(hWnd, GWL_STYLE, exStyle | WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd, RGB(255, 255, 255), 0, LWA_COLORKEY);
----------------------------------------------------------
のように改良して実行してみましたが、ウィンドウは表示されなくなってしまいました。
これはどうしてでしょうか。ここに質問してごめんなさい。
よろしくお願いいたします。

お礼日時:2010/01/15 15:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報