响应WM_MOUSEHOVER和WM_MOUSELEAVE
来源:互联网 发布:Php 微信众筹系统 编辑:程序博客网 时间:2024/05/17 23:54
本人使用的版本VS2010
有时候我们会在控件继承类的时候为控件添加鼠标进入和离开的事件。
1.下面首先添加这2个事件同时也添加WM_MOUSEMOVE事件,注意,不是WM_NCMOUSEHOVER和WM_NCMOUSELEAVE,
里面的NC全称为nonclient area,指的是非工作区。
2.创建并在WM_MOUSEMOVE事件调用以下这个函数,函数名不唯一
void CMyXXX::TraceMouseEvent()
{
TRACKMOUSEEVENT tEventTrack = {0};
tEventTrack.cbSize = sizeof(tEventTrack);
tEventTrack.dwFlags = TME_HOVER|TME_LEAVE;
tEventTrack.dwHoverTime = 1;
tEventTrack.hwndTrack = GetSafeHwnd();
_TrackMouseEvent(&tEventTrack);
}
以上就能响应WM_MOUSEHOVER和WM_MOUSELEAVE事件了。
在这个前提做一下判别优化,直接贴以下代码了。
BOOL bMouseTrack=TRUE;
void BEdit::OnMouseHover(UINT nFlags, CPoint point)
{
//添加你的事件
CEdit::OnMouseHover(nFlags, point);
}
void BEdit::OnMouseLeave()
{
bMouseTrack=TRUE;
//添加你的事件
CEdit::OnMouseLeave();
}
void BEdit::OnMouseMove(UINT nFlags, CPoint point)
{
if (bMouseTrack)
{
TraceMouseEvent();
}
CEdit::OnMouseMove(nFlags, point);
}
void BEdit::TraceMouseEvent()
{
TRACKMOUSEEVENT tEventTrack = {0};
tEventTrack.cbSize = sizeof(tEventTrack);
tEventTrack.dwFlags = TME_HOVER|TME_LEAVE;
tEventTrack.dwHoverTime = 2;
tEventTrack.hwndTrack = GetSafeHwnd();
BOOL bRet = _TrackMouseEvent(&tEventTrack);
bMouseTrack=FALSE; //若已经追踪,则停止追踪
}
- 响应WM_MOUSEHOVER和WM_MOUSELEAVE
- _TrackMouseEvent 响应 WM_MOUSELEAVE 和 WM_MOUSEHOVER 消息
- WM_MOUSELEAVE和WM_MOUSEHOVER使用
- 处理WM_MOUSELEAVE和WM_MOUSEHOVER
- WM_MOUSELEAVE和WM_MOUSEHOVER使用
- WM_MOUSELEAVE和WM_MOUSEHOVER消息
- WM_MOUSEHOVER 和 WM_MOUSELEAVE
- 让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息
- WM_MOUSEHOVER/WM_MOUSELEAVE
- WM_MOUSELEAVE WM_MOUSEHOVER
- OnMouseHover()和OnMouseLeave()(让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息)
- OnMouseHover()和OnMouseLeave()(让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息)
- OnMouseHover()和OnMouseLeave()(让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息)
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- 使用_TrackMouseEvent捕获WM_MOUSELEAVE和WM_MOUSEHOVER消息
- WM_MOUSEHOVER和WM_MOUSELEAVE消息的触发
- 捕捉鼠标停留WM_MOUSEHOVER和离开WM_MOUSELEAVE消息
- 捕捉鼠标停留WM_MOUSEHOVER和离开WM_MOUSELEAVE消息
- UML类图与类的关系详解
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- SHELL学习笔记----IF条件判断,判断条件
- 黑马程序员-OC笔记(九)NSObject 的常用方法
- EasyUI----DataGrid行明细增删改操作
- 响应WM_MOUSEHOVER和WM_MOUSELEAVE
- 审计署:中石油所属9单位违规招标涉合同额260亿
- C++ Socket编程步骤
- linux下的多线程
- 黑马程序员-OC笔记(十)copy-mutableCopy
- fedora换主题
- jsp 页面格式化 日期标签 jstl fmt
- [windows+cocos2dx](绝对/相对)坐标系、锚点、深度、
- UINavigationController如何连续返回两级/回到第一级