代码收录-MFC 窗口透明

本文探讨了在MFC中如何实现窗口透明,同时指出透明窗口可能导致的鼠标穿透到下方窗口的问题,这是一个在实际应用中需要注意的细节。
void CStockControlDlg::OnBnClickedButtonpricearea()
{
// TODO: 在此添加控件通知处理程序代码
price_area_flag = 1;
ShowWindow(SW_SHOWMAXIMIZED); 


/*    method1
//加入WS_EX_LAYERED扩展属性,以下用于对话框透明显示  
BYTE byteAlpha = 150;
LONG nRet = ::GetWindowLong(m_hWnd, GWL_EXSTYLE); 
nRet = nRet | WS_EX_LAYERED; 
::SetWindowLong(m_hWnd, GWL_EXSTYLE, nRet);
SetLayeredWindowAttributes(nRet, byteAlpha,LWA_ALPHA );
*/



/*    method 2
//加入WS_EX_LAYERED扩展属性,以下用于对话框透明显示 
SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE,  
GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE) ^ 0x80000);
wchar_t Str[]=L"User32.DLL";
HINSTANCE hInst = LoadLibrary(Str);  
  
if(hInst)  
{  
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);  
MYFUNC fun = NULL;  
  
//取得SetLayeredWindowAttributes函数指针  
fun = (MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");  
if (fun)  
{  
fun(this->GetSafeHwnd(), RGB(100, 255, 0), 100, LWA_ALPHA);  
//fun(m_hWnd, RGB(0, 0, 0), 200, 0x1 | 0x2);
}  
FreeLibrary(hInst);  


*/

}


这是一个按钮控件消息,这两种写法都可以达到相同的效果,使窗口透明,但是问题是,窗口透明的同时也使得鼠标穿透到了下方的窗口,这是个讨厌的问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值