首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

窗体下覆盖一个窗体

2012-09-10 
窗体上覆盖一个窗体需求是这样:有一个窗体A ,在它加载东西时,为了防止对它操作,现在要求我弄一个半透明的

窗体上覆盖一个窗体
需求是这样:有一个窗体A ,在它加载东西时,为了防止对它操作,现在要求我弄一个半透明的窗体B 覆盖在 A 的上面。


该怎么实现?


[解决办法]

探讨
需求是这样:有一个窗体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); 
}

热点排行