让我们考虑一下这个代码片段:
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(。