自定义的消息没起作用
class MyStaButton : public CStatic,继承了一个MyStaButton 类,打算用来做按钮。于是响应如下几个消息(鼠标移动,鼠标离开,鼠标悬停)
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
其中(鼠标离开,鼠标悬停)自定义的消息
#define WM_MOUSELEAVE (WM_USER +130)//用户自定义鼠标消息
#define WM_MOUSEHOVER (WM_USER +135)
然后.cpp里
BEGIN_MESSAGE_MAP(MyStaButton, CStatic)
ON_WM_MOUSEMOVE()
ON_MESSAGE(WM_MOUSELEAVE,&MyStaButton::OnMouseLeave)//该处使用自定义消息发送形式
ON_MESSAGE(WM_MOUSEHOVER,&MyStaButton::OnMouseHover)
ON_WM_CTLCOLOR()
ON_WM_SETCURSOR()
END_MESSAGE_MAP()
消息响应函数
LRESULT MyStaButton::OnMouseLeave(WPARAM wParam, LPARAM lParam)//未响应
{
m_btnState = BTN_LEAVE;
TRACE(_T("Leave \n"));
this->Invalidate();
bis_tracked = FALSE;
MessageBox(_T("aa"));
return 0;
}
LRESULT MyStaButton::OnMouseHover(WPARAM wParam, LPARAM lParam)
{
m_btnState = BTN_HOVER;
TRACE(_T("Hover \n"));
return 0;
}
编译通过,运行时杯具的发现OnMouseLeave,OnMouseHover未起作用。因为TRACE没起作用,打断点发现程序没有执行这两个消息函数。
求解