我也是SOUI的新手,在使用MSG_WM_MOUSELEAVE消息的时候,发现有时候会不响应这个消息,查阅了资料后,发现这个消息比较特殊,需要处理_TrackMouseEvent函数
这里有两个消息处理
MSG_WM_MOUSELEAVE(OnMouseLeave)
MSG_WM_MOUSEMOVE(OnMouseMove)
如果希望MSG_WM_MOUSELEAVE消息正常使用,需要在OnMouseMove(UINT nFlags, CPoint pt)里面处理_TrackMouseEvent函数,就是在OnMouseMove里面加入下面的代码:
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT); //监控鼠标离开
tme.dwFlags = TME_LEAVE;
tme.hwndTrack = this->m_hWnd;
::_TrackMouseEvent(&tme);
当然还需头文件:
#include <CommCtrl.h>
#pragma comment(lib,"Comctl32.lib")
这样的话,MSG_WM_MOUSELEAVE消息就可以正常使用了。