怎么样捕捉WM_MOUSELEAVE和WM_MOUSEHOVER消息?
本来是想做一个控件,当鼠标移入的时候控件高亮度显示,移出时恢复,
我也知道WINDOWS里有WM_MOUSELEAVE 和 WM_MOUSEHOVER消息,可以直接用捕捉,但我在MFC里这样做动完全没有反应。
我的步骤是平常那样先加入消息映射:
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
然后,在头文件加入相应函数:
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);
最后在CPP文件实现,但从结果中看,程序并没有捕捉到这两个消息。
为了试验是不是MFC不响应这两个消息,我又重载了WindowProc代码如下
LRESULT CGraphicButton::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if (message==WM_MOUSELEAVE)MessageBox("mouse leave");
return CButton::WindowProc(message, wParam, lParam);
}
结果仍然没有捕捉到消息,
现在为了模拟这两个消息,我只好重载OnNcHitTest了,但当鼠标快速移动时模拟会出现“误判”---捕捉不到消息。
这下可如何是好?难道为了实现这么一个功能还要大张旗鼓地用勾子函数监视鼠标?大家探讨探讨!