MFC 中的窗口消息管理:添加基类调用是否是强制性的?



让我们考虑一下这个代码片段:

BEGIN_MESSAGE_MAP(CMyCheckBox, CButton)
ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()
void CMyCheckBox::OnMouseMove(UINT nFlags, CPoint point)
{
// here my code ....
CButton::OnMouseMove(nFlags, point); // <-- Is this important ?
}

问题:

1- 基类调用是强制性的吗?

CButton::OnMouseMove(nFlags, point);  // <-- Is this mandatory?

2-如果我不添加它,会发生什么?(例如窗口消息堆栈溢出( ?
3-基类是message release的一种形式吗?如果是这样,有没有另一种方法可以正确发布消息?

窗口消息及其关联数据由系统管理。它生成消息和关联数据,将这两个数据交给程序,并在消息处理程序将控制权返回系统时进行清理。

这与 MFC 使用类层次结构C++实现无关。如果基类需要观察消息,则基类调用是必需的。如果您创作了基类,则回答这个问题是微不足道的。如果基类由 MFC 提供,文档会指出,对基类实现的调用是否是正常运行所必需的(例如 CWnd::OnCommand(。

相关内容

  • 没有找到相关文章

最新更新