MFCでウィンドウの透過性を設定する方法
MFCウィンドウを透過するために、次の手順を実行します。
- WM_CREATE メッセージの処理関数をウィンドウ クラスのメッセージ マップに追加する。
BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
ON_WM_CREATE()
// 其他消息映射
END_MESSAGE_MAP()
- WM_CREATEメッセージの処理内にて、ウインドウのスタイルをWS_EX_LAYEREDに指定し、SetLayeredWindowAttributes関数を呼び出すことで透過設定を行っている。
int CMyWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// 设置窗口样式为WS_EX_LAYERED,使窗口支持透明度
SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE) | WS_EX_LAYERED);
// 设置透明度,第一个参数为窗口句柄,第二个参数为透明度值,第三个参数为透明度设置标志
SetLayeredWindowAttributes(GetSafeHwnd(), RGB(255, 0, 0), 128, LWA_ALPHA);
return 0;
}
上掲のコードでは、RGB(255,0,0)が透明色です。128は透明度の値(0~255)です。LWA_ALPHAは透明度の値を使用することを示します。
- プログラムをコンパイルして実行します。ウィンドウは、指定された透過率で表示されます。