请教大家一个半透明窗口的问题:LoadLibrary("User32.DLL");
我建立一个项目,基于Signle Document,在操作过程中,我想在操作等待过程中,使用半透明覆盖效果。因此,新建一个对话框,将对话框实现半透明效果,在主程序中create,然后隐藏,在需要的时候,我把它显示出来,按照这种方法,如果仅启动一个程序,没有问题,但是在一台机器上启动多个程序的时候,仅有第一个有半透效果,其他的半透明对话框都不能显示出来,哪位大侠知道这是为什么啊?
代码如下
BOOL CDlgWatingBK::OnInitDialog()
{
CDialog::OnInitDialog();
// ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);//设置窗体大小位置不可变
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL"); //显式加载DLL
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");//取得SetLayeredWindowAttributes函数指针
if(fun)fun(this->GetSafeHwnd(),0,128,2);
FreeLibrary(hInst);
}
MoveWindow(0,0,1,1);
return TRUE;
}
需要显示的时候,调用函数ShowWindow(SW_SHOW);
但仅启动的第一个程序有效果,其他的窗口,无论是否调用ShowWindow(SW_SHOW),都是ShowWindow(SW_HIDE);效果,谁知道这是为什么啊?