1

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

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吗?如果是这样,是否有另一种方法可以正确发布消息?

4

1 回答 1

1

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

这与使用 C++ 类层次结构的 MFC 实现无关。如果基类需要观察消息,则基类调用是强制性的。如果您编写了基类,这很容易回答。如果基类由 MFC 提供,则文档指出,对基类实现的调用是否对于正常运行是必需的(例如CWnd::OnCommand)。

于 2020-06-05T13:31:41.467 回答