2010-07-20 245 views

回答

4

没有窗口消息/事件表示“鼠标进入”或“鼠标离开”。 但是,这可以通过处理控件的“MouseMove”消息并捕获鼠标输入来检查点是否位于控制区域内来实现。如果点位于控制区域外,则释放捕获。

样本代码检查here

+1

你也可以看看TrackMouseEven t API函数:http://msdn.microsoft.com/en-us/library/ms646265(VS.85).aspx – humbagumba 2010-07-20 08:38:14

+0

@Hemant:你应该看到我的答案... – sergiol 2014-07-15 00:30:42

0

@Hemant:

你错了。有消息鼠标离开鼠标悬停在WINUSER.H定义

#if((_WIN32_WINNT >= 0x0400) || (WINVER >= 0x0500)) 
#define WM_MOUSEHOVER     0x02A1 
#define WM_MOUSELEAVE     0x02A3 
#endif 
#if(WINVER >= 0x0500) 
#define WM_NCMOUSEHOVER     0x02A0 
#define WM_NCMOUSELEAVE     0x02A2 
#endif /* WINVER >= 0x0500 */ 

文档:

WM_MOUSEHOVER message

WM_MOUSELEAVE message

你还可以用一个消息映射一样处理:

ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave) 
+0

不适合我 – manatttta 2015-10-02 14:06:13