vc透明對話方塊
阿新 • • 發佈:2019-02-17
在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); }
注:這種新增方式為對話方塊和上面的所有控制元件一起透明,然而實際使用中,多數情況下想讓對話方塊背景透明,靜態文字背景透明,而對話方塊上的所有控制元件不透明,這種實現方法在下一篇文章中介紹。