窗体上覆盖一个窗体需求是这样:有一个窗体A ,在它加载东西时,为了防止对它操作,现在要求我弄一个半透明的
窗体上覆盖一个窗体
需求是这样:有一个窗体A ,在它加载东西时,为了防止对它操作,现在要求我弄一个半透明的窗体B 覆盖在 A 的上面。
该怎么实现?
[解决办法]
[解决办法]设置半透明在弹出的窗体OnInitDialog中加入下面代码即可
SetWindowLong(m_hWnd,GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
SetLayeredWindowAttributes(0,100,2);
[解决办法]弹出一个窗体的代码:
RECT rect;
GetClientRect(&rect);
dlgLoading = new CLoading();
dlgLoading->Create(IDD_DIALOG2, this);
dlgLoading->MoveWindow(0, 0, rect.right-rect.left, rect.bottom-rect.top);
[解决办法]SetLayerWindowAttribute在MSDN里面这没有,要想调用这个函数,你得这样:
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
HINSTANCE hInst = LoadLibrary("User32.DLL");
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(fun)fun(this->m_hWnd,0,220,2);
FreeLibrary(hInst);
}