在OnInitDialog()中添加代码
1、vs2003以上
//VS2003以上版本
SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)|WS_EX_LAYERED);
SetLayeredWindowAttributes(0,200,LWA_ALPHA);
2、vc6.0
SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)|0x00080000);
HINSTANCE hInst = LoadLibrary(_T("User32.dll"));
if (hInst)
{
typedef BOOL (WINAPI *MyFun)(HWND,COLORREF,BYTE,DWORD);
MyFun myfun = NULL;
myfun = (MyFun)GetProcAddress(hInst, "SetLayeredWindowAttributes");
//"190"为设置的透明度,范围0-255, 0完全透明,255不透明
if (myfun) myfun(GetSafeHwnd(),0,190,2);
FreeLibrary(hInst);
}
注:这种添加方式为对话框和上面的所有控件一起透明,然而实际使用中,多数情况下想让对话框背景透明,静态文本背景透明,而对话框上的所有控件不透明,这种实现方法在下一篇文章中介绍。