WM_MOUSEHOVER 和 WM_MOUSELEAVE
2016-07-21 15:36
351 查看
本文来源:http://www.68idc.cn/help/buildlang/ask/20150718452155.html
1.建立MFC程序2.添加按钮,IDC_BUTTON13.添加类,直接右键控件时无法添加CButton的派生类的,如果想添加的话,只能选中项目根,右键添加类,MFC类--MFC类向导--
1.建立MFC程序
2.添加按钮,IDC_BUTTON1
3.添加类,直接右键控件时无法添加CButton的派生类的,如果想添加的话,只能选中项目根,右键添加类,MFC类-->MFC类向导-->选择继承CButton。
4.添加变量,选中按钮,,右键添加变量,mbt1,类型为CBtn//没有这个变量是不行的,我试了n次都没有成功,缺少这个没有反应
5.打开类向导,在类CBtn下添加消息OnMouseHover、OnMouseMove和OnMouseLeave
6.在btn.h中public下添加bool m_bTracking;
在btn.cpp中在类的构造函数中添加m_bTracking=0;//初始化,添加的消息对应如下,实现的功能是当光标在按钮上悬停1后打开网页:
void CBtn::OnMouseHover(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
ShellExecute(0, NULL, _T(""), NULL, NULL, SW_NORMAL);
m_bTracking = false;
CButton::OnMouseHover(nFlags, point);
}
void CBtn::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (!m_bTracking)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT);
tme.dwFlags =TME_HOVER;//要触发的消息
tme.hwndTrack = this->m_hWnd;
tme.dwHoverTime = 1000;// 若不设此参数,则无法触发mouseHover
if (::_TrackMouseEvent(&tme)) //MOUSELEAVE|MOUSEHOVER消息由此函数触发
{
//::_TrackMouseEvent(&tme);
m_bTracking = true;
}
}
CButton::OnMouseMove(nFlags, point);
}
void CBtn::OnMouseLeave()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_bTracking = false;
CButton::OnMouseLeave();
}
也可以参考:OnMouseHover()和OnMouseLeave()(让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息)
1.建立MFC程序2.添加按钮,IDC_BUTTON13.添加类,直接右键控件时无法添加CButton的派生类的,如果想添加的话,只能选中项目根,右键添加类,MFC类--MFC类向导--
1.建立MFC程序
2.添加按钮,IDC_BUTTON1
3.添加类,直接右键控件时无法添加CButton的派生类的,如果想添加的话,只能选中项目根,右键添加类,MFC类-->MFC类向导-->选择继承CButton。
4.添加变量,选中按钮,,右键添加变量,mbt1,类型为CBtn//没有这个变量是不行的,我试了n次都没有成功,缺少这个没有反应
5.打开类向导,在类CBtn下添加消息OnMouseHover、OnMouseMove和OnMouseLeave
6.在btn.h中public下添加bool m_bTracking;
在btn.cpp中在类的构造函数中添加m_bTracking=0;//初始化,添加的消息对应如下,实现的功能是当光标在按钮上悬停1后打开网页:
void CBtn::OnMouseHover(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
ShellExecute(0, NULL, _T(""), NULL, NULL, SW_NORMAL);
m_bTracking = false;
CButton::OnMouseHover(nFlags, point);
}
void CBtn::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (!m_bTracking)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT);
tme.dwFlags =TME_HOVER;//要触发的消息
tme.hwndTrack = this->m_hWnd;
tme.dwHoverTime = 1000;// 若不设此参数,则无法触发mouseHover
if (::_TrackMouseEvent(&tme)) //MOUSELEAVE|MOUSEHOVER消息由此函数触发
{
//::_TrackMouseEvent(&tme);
m_bTracking = true;
}
}
CButton::OnMouseMove(nFlags, point);
}
void CBtn::OnMouseLeave()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
m_bTracking = false;
CButton::OnMouseLeave();
}
也可以参考:OnMouseHover()和OnMouseLeave()(让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息)
相关文章推荐
- 调用已经安装的APP来打开自己应用中的文件
- 关于Git 版本控制系统
- 微信js-sdk上传多个图片
- php 问答
- 【jQuery】选择器
- leetcode 258
- Apache Log4j配置说明
- 通过JDBC获取表结构生成javaBean
- android LisrView 几个重要属性
- 【CodeForces】[610A]Pasha and Stick
- 内部类的访问一
- MySql查询更新例子
- 迭代器――STL关键所在
- 面向对象分析
- 飞凌Fl2440 led驱动的移植
- Makefile (八) 使用函数
- Android用HandlerThread模拟AsyncTask功能(ThreadTask)
- 温州银行项目搭建(PE框架)
- linux信号机制与python信号量
- React和动态网站接口的经济学