VC将窗体(基于对话框)设置为透明后,你可以选择pass鼠标事件到它下面的窗体或者自己接收鼠标事件。
1. pass鼠标事件,就是鼠标穿透窗体到它下面的其它窗体上
void SetWndTransparent(BYTE bAlpha){
DWORD dwExStyle=GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE|WS_EX_LAYERED);
if((dwExStyle & 0x80000) != 0x80000)
SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE, dwExStyle^0x80000);
SetLayeredWindowAttributes(0, bAlpha, LWA_ALPHA);
}
//设置70%透明度
SetWndTransparent((255 * 70) / 100);
2. 窗体自己接收鼠标事件:
将
DWORD dwExStyle=GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE|WS_EX_LAYERED);
改为
DWORD dwExStyle=GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE^WS_EX_LAYERED);
就是将 | 改为 ^