半透明ウィンドウ、部分的に不透明 #2
前回の半透明ウィンドウ、部分的に不透明の下記が解決した。
一点わからない点があります。
指定色透明を SetLayeredWindowAttributes で行うわけですが、今回のように任意の画像を表示させる場合、その画像に透明色に指定した色が含まれていた場合、以下のように情けない状態になってしまいます。
以下のサイトがとても参考になった。
詳細は上記に譲るとして、ポイントは
- ウィンドウ全体を半透明にするには SetLayeredWindowAttributes
- 各ビットのα値で半透明を制御するには UpdateLayeredWindow
- SetLayeredWindowAttributes の場合は WM_PAINT で描画
- UpdateLayeredWindow の場合は HDC に任意のタイミングで描画
という感じ。