[MFC]半透明ウィンドウの作り方

プログラムを作っていると他のウィンドウに重ねて使う半透明のウィンドウが必要になることがたまにあります。

この記事ではMFCで半透明ウィンドウを作る方法について解説します。

半透明ウィンドウの作り方

半透明ウィンドウを作るには、ウィンドウのスタイルにWS_EX_LAYEREDを追加してSetLayeredWindowAttributes関数で透明度(0〜255)を指定するだけで良いです。

一度実施すればずっと適用され続けるので、ウィンドウのOnInitDialog関数に以下の処理を記述します。

MFC
// 現在のウィンドウスタイルを取得
UINT style = ::GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE);
// ウィンドウスタイルにWS_EX_LAYEREDを追加
style |= WS_EX_LAYERED;
// ウィンドウにスタイル適用
::SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE, style);
// ウィンドウの透明度を設定(127が透明度、0〜255で指定)
this->SetLayeredWindowAttributes(0, 127, LWA_ALPHA);

OnInitDialog関数で上記処理を実施したウィンドウを表示すると、下図のように下にある画面が透けて見えるようになります。

この時、マウスメッセージなどは前面に表示されている半透明ウィンドウにしか届かないので注意してください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です