arm*_*ahi 1 c++ mfc hover mouseevent
在我的应用程序中,我需要处理鼠标悬停事件来更改按钮的背景。使用 MFC 类向导,我无法在该项目的事件列表中找到鼠标悬停条目。我尝试使用PreTranslateMessage,但它不起作用。我该如何处理该事件?
默认情况下不生成鼠标悬停事件。您必须通过使用正确填充的TRACKMOUSEEVENT 结构调用TrackMouseEvent来请求它们:
TRACKMOUSEEVENT tme = { 0 };
tme.cbSize = sizeof( tme );
tme.dwFlags = TME_HOVER;
tme.hwndTrack = myButton;
tme.dwHoverTime = myHoverTime; // HOVER_DEFAULT, or the hover timeout in milliseconds.
::TrackMouseEvent( &tme );
Run Code Online (Sandbox Code Playgroud)
如果鼠标悬停在myButton上达myHoverTime毫秒,系统将生成WM_MOUSEHOVER消息。
由于WM_MOUSEHOVER消息被发布到请求鼠标悬停消息的窗口,因此您必须派生一个自定义按钮控件,并在其消息映射中包含适当的条目。特别是,您必须使用该ON_WM_MOUSEHOVER()宏并实现afx_msg void OnMouseHover(UINT, CPoint)(请参阅WM_ 消息处理程序:L - M以供参考)。