半透明ウィンドウ、部分的に不透明 #2

前回の半透明ウィンドウ、部分的に不透明の下記が解決した。

一点わからない点があります。

指定色透明を SetLayeredWindowAttributes で行うわけですが、今回のように任意の画像を表示させる場合、その画像に透明色に指定した色が含まれていた場合、以下のように情けない状態になってしまいます。

以下のサイトがとても参考になった。

半通過ウィンドウの作り方講座

詳細は上記に譲るとして、ポイントは

  • ウィンドウ全体を半透明にするには SetLayeredWindowAttributes
  • 各ビットのα値で半透明を制御するには UpdateLayeredWindow
  • SetLayeredWindowAttributes の場合は WM_PAINT で描画
  • UpdateLayeredWindow の場合は HDC に任意のタイミングで描画

という感じ。