MFC 鼠标离开窗口设置窗口透明
时间: 2023-07-19 16:12:07 浏览: 93
在MFC中,可以通过CWnd类的OnMouseMove()和OnMouseLeave()函数来处理鼠标移动和离开窗口的事件。在OnMouseLeave()函数中可以设置窗口透明。
具体实现可以参考以下代码:
```cpp
void CMyWnd::OnMouseMove(UINT nFlags, CPoint point)
{
// 鼠标移动事件处理
CWnd::OnMouseMove(nFlags, point);
// TODO: 在此添加消息处理程序代码和/或调用默认值
}
void CMyWnd::OnMouseLeave()
{
// 窗口透明处理
SetLayeredWindowAttributes(0, 200, LWA_ALPHA);
CWnd::OnMouseLeave();
}
```
在OnMouseLeave()函数中,使用SetLayeredWindowAttributes()函数设置窗口的透明度,第一个参数为窗口句柄,第二个参数为透明度值(0-255),第三个参数为透明度的标志(LWA_ALPHA表示设置窗口的透明度)。
需要注意的是,使用SetLayeredWindowAttributes()函数设置窗口透明度时,窗口的样式必须为WS_EX_LAYERED。可以在创建窗口时设置窗口样式,如下所示:
```cpp
BOOL CMyWnd::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID, DWORD dwExStyle /* = WS_EX_LAYERED */)
{
// 设置窗口样式为WS_EX_LAYERED
dwExStyle |= WS_EX_LAYERED;
return CWnd::CreateEx(dwExStyle, lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID);
}
```
这样就可以在窗口中实现鼠标离开时设置透明的功能了。
阅读全文