• ベストアンサー

VS2005でウィンドウの半透明

いつもお世話になっております。 VS2005を使ってWindowsアプリケーション作成を行っています。 ウィンドウの背景を半透明にしたいと思い、Webで調べたところ setlayeredwindowattributes関数で半透明にできるとのことだったのですが、 VS2005で実行してもできませんでした。 VS2005でもウィンドウを半透明にすることはできるのでしょうか。 ご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

 こんばんは。  http://msdn.microsoft.com/ja-jp/library/ms997507.aspx  http://msdn.microsoft.com/ja-jp/library/cc411043.aspx  SetLayeredWindowAttributes(hwnd, 0, 127, LWA_ALPHA);  なのでは。  因みに、  SetLayeredWindowAttributes(hWnd, RGB(255, 255, 255), 0, LWA_COLORKEY);  は、RGB(255, 255, 255)に該当する領域を半透過させます。透明レベルが0に設定されている為、ウィンドウが消えてしまったのでは。  例えば、キャプションバーを持たない、真っ白なポップアップウィンドウならば、跡形もなく消えてしまいます。  透明レベルは0~255ですが、127辺りで試せば、成功か否かは一目瞭然です。

mymusic54
質問者

お礼

早い補足回答ありがとうございます。 machongolaさんのおかげで自分のしたいように ウィンドウを半透明にすることができました。 そこでまた疑問ができたのですが、 同じウィンドウ上の白い部分を透明に、黒い部分を半透明に することは可能でしょうか。 SetLayeredWindowAttributes関数は第2引数と第3引数を選ぶようになっていて、 ウィンドウ全体を半透明にするか、指定した色を透明にするか しかできないのでしょうか。

その他の回答 (2)

回答No.3

 こんばんは。御礼頂きました。  どちらか一方しか出来ない、と言う事になります。

mymusic54
質問者

お礼

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

回答No.1

VS2005だとかは問題ではありません。 半透明Windowを作るのは可能です。 あなたが何の言語を利用しているのか分かりませんが、 参考までに、 C++ Win32APIでの実現方法 http://www.geocities.jp/ky_webid/win32c/060.html C# .Netframeworkでの実現方法 http://www.atmarkit.co.jp/fdotnet/csharptips/004fade/004fade.html

mymusic54
質問者

お礼

早いご回答ありがとうございます。 説明不足ですいません。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); ---------------------------------------------------------- のように改良して実行してみましたが、ウィンドウは表示されなくなってしまいました。 これはどうしてでしょうか。ここに質問してごめんなさい。 よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう