对话框CDialog类的WM_MOUSEMOVE事件(鼠标移动事件)处理当鼠标在对话框上移动时的操作,如果要求程序在鼠标移动到某个Button上时做出响应,一种直接的想法是在对话框的事件处理程序中根据鼠标的位置判断,如果鼠标位置在按钮上面,然后做出响应。但是Dialog中不能响应控件上的鼠标事件,Dialog中只能响应没有控件地方的鼠标 事件。
要响应按钮上的鼠标移动事件,要自己重写按钮类,在重写的类中响应WM_MOUSEMOVE消息,然后给按钮绑定重写类型的变量。
class CNewButton : public CButton{
...
public:
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
};
void CNewButton::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
ShowWindow(SW_HIDE);
if (p_btn)
{
p_btn->ShowWindow(SW_NORMAL);
}
CButton::OnMouseMove(nFlags, point);
}