WM_MOUSEHOVER/WM_MOUSELEAVE
来源:互联网 发布:python运维框架 编辑:程序博客网 时间:2024/06/07 09:49
程序要检测到鼠标进入或离开了窗口,需要用到WM_MOUSEHOVER和WM_MOUSELEAVE消息。
VC默认是不产生这两个消息的,它们必须使用_TrackMouseEvent产生。方法是:
1、响应WM_MOUSEMOVE消息,在其中
if (!m_bEnter)// 必须定义一个鼠标进入或离开的标志,否则在MOUSEMOVE的时候,程序总不停的调用_TrackMouseEvent
{
TRACKMOUSEEVENT track;
ZeroMemory(&track, sizeof(TRACKMOUSEEVENT));
track.cbSize = sizeof(TRACKMOUSEEVENT);
track.hwndTrack = m_hWnd;
track.dwFlags = TME_LEAVE;
track.dwHoverTime = HOVER_DEFAULT;
_TrackMouseEvent(&track);
m_bEnter = TRUE;
}
注:本段程序必须放在消息处理中进行,而不能放在别处例如初始化时,只调用一次
2、处理WM_MOUSELEAVE
POINT pt;
GetCursorPos(&pt);
CRect rect;
GetClientRect(&rect);
ClientToScreen(rect);
if (!rect.PtInRect(pt))
{
m_tooltipWnd.ShowWindow(SW_HIDE);
}
m_bEnter = FALSE;
注:之所以还要判断pt是否在rect中,是因为_TrackMouseEvent有个bug,当鼠标进入到窗口上的某个控件上方的时候,它也认为mouseleave了
- WM_MOUSEHOVER/WM_MOUSELEAVE
- WM_MOUSELEAVE WM_MOUSEHOVER
- WM_MOUSELEAVE和WM_MOUSEHOVER使用
- 响应WM_MOUSEHOVER和WM_MOUSELEAVE
- 处理WM_MOUSELEAVE和WM_MOUSEHOVER
- WM_MOUSELEAVE和WM_MOUSEHOVER使用
- WM_MOUSELEAVE和WM_MOUSEHOVER消息
- WM_MOUSEHOVER 和 WM_MOUSELEAVE
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- _TrackMouseEvent 响应 WM_MOUSELEAVE 和 WM_MOUSEHOVER 消息
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- WM_MOUSEHOVER和WM_MOUSELEAVE消息的触发
- 捕捉鼠标停留WM_MOUSEHOVER和离开WM_MOUSELEAVE消息
- 捕捉鼠标停留WM_MOUSEHOVER和离开WM_MOUSELEAVE消息
- 关于 控件 的鼠标效应消息 WM_MOUSELEAVE 和WM_MOUSEHOVER
- 捕捉鼠标停留WM_MOUSEHOVER和离开WM_MOUSELEAVE消息
- 让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息
- 关于MFC中WM_MOUSEHOVER和WM_MOUSELEAVE消息的使用
- Push机制
- Android资源文件的大小限制及解决方案
- fix SystemStackError occurring with "gem list -r -a" on 1.9
- Verilog HDL运算符
- 如何根据项目选择FPGA/CPLD器件
- WM_MOUSEHOVER/WM_MOUSELEAVE
- 数据库性能问题分析
- C89语言标示符名字空间
- Android学习系列(7)--App消息通知机制
- DOM和JavaScript
- 小波变换网文精粹:小波变换教程(四)
- 中文简体与繁体的转换
- C#读取txt文档中乱码问题
- verilog仿真用的分层时间队列