MFC 光标停靠客户区的某个区域热点效果是怎么实现的
MFC 光标停靠客户区的某个区域热点效果是如何实现的?

上图红色方框中的客户区区域光标不停靠时的效果

红色方框中光标停靠时的效果
请问这种效果是如何实现的?虽然考虑过用WM_MOUSEHAVOR和WM_MOUSELEAFE这两个消息,但是没有什么思路!请大家指点一二,有实例更好。谢谢!
------解决方案--------------------
鼠标移动到相应位置时,以某种显示形式重画该区域,鼠标离开回复原来原来显示,鼠标点击执行你期望的动作
------解决方案--------------------
------解决方案--------------------

------解决方案--------------------
http://www.cnblogs.com/greatverve/archive/2013/02/06/TRACKMOUSEEVENT.html
------解决方案--------------------
响应鼠标进入和离开区域的事件
更换底色或图片一次
上图红色方框中的客户区区域光标不停靠时的效果
红色方框中光标停靠时的效果
请问这种效果是如何实现的?虽然考虑过用WM_MOUSEHAVOR和WM_MOUSELEAFE这两个消息,但是没有什么思路!请大家指点一二,有实例更好。谢谢!
------解决方案--------------------
鼠标移动到相应位置时,以某种显示形式重画该区域,鼠标离开回复原来原来显示,鼠标点击执行你期望的动作
------解决方案--------------------
1 把下面代码加进对话框的WM_MOUSEMOVE的消息响应中
TRACKMOUSEEVENT tme;
tme.cbSize=sizeof(TRACKMOUSEEVENT);
tme.dwFlags=TME_HOVER
------解决方案--------------------
TME_LEAVE;
tme.dwHoverTime=HOVER_DEFAULT;
tme.hwndTrack=m_hWnd;
if(!_TrackMouseEvent(&tme))
AfxMessageBox("鼠标事件捕捉失败!");
2 然后你直接可以用下面代码在PreTranslateMessage函数中接收,不需要自己写WM_MOUSELEASE和WM_MOUSEHOVER消息的响应函数(当然你要自己写也行):
if(pMsg->message==WM_MOUSELEAVE)
AfxMessageBox("mouse leave");
return CDialog::PreTranslateMessage(pMsg);
或者
手动添加消息响应WM_MOUSELEASE。
.h
afx_msg LRESULT OnMouseLeave(WPARAM wParam,LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam,LPARAM lParam);
.cpp
ON_MESSAGE(WM_MOUSELEAVE,OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER,OnMouseHover)
LRESULT CMyButton::OnMouseLeave(WPARAM wParam,LPARAM lParam)
{
m_bMouseOver=FALSE;
m_bTrack=FALSE;
InvalidateRect(NULL);
return 0;
}
LRESULT CMyButton::OnMouseHover(WPARAM wParam,LPARAM lParam)
{
m_bMouseOver=TRUE;
InvalidateRect(NULL);
return 0;
}
------解决方案--------------------
------解决方案--------------------
http://www.cnblogs.com/greatverve/archive/2013/02/06/TRACKMOUSEEVENT.html
------解决方案--------------------
响应鼠标进入和离开区域的事件
更换底色或图片一次