【问题标题】:How to handle notify messages in child & parent classes?如何处理子类和父类中的通知消息?
【发布时间】:2010-10-12 05:53:57
【问题描述】:

我有一个自定义 CTabCtrl,我正在尝试对其进行自定义(以自动更改页面)。

如果我在选项卡控件中处理ON_NOTIFY_REFLECT(TCN_SELCHANGE, ...),则父类不会收到ON_NOTIFY(TCN_SELCHANGE, ...)

如何在子类和父类中同时接收通知消息?

目前我正在使用手动将 WM_NOTIFY 消息发送到父类的“解决方法”:

void CMyTabControl::OnSelChange(NMHDR *pHeader, LRESULT *pResult)
{
    const int index = this->GetCurSel();
    this->ShowTab(index);

    const CWnd *const pParent = this->GetParent();
    if (pParent != NULL)
    {
        *pResult = pParent->SendMessage(WM_NOTIFY, TCN_SELCHANGE, 
            reinterpret_cast<LPARAM>(pHeader));
    }
}

编辑:我已经尝试过 *pResult = 0 和 *pResult = 1 但它仍然没有将消息发送到父级。 另外,我注意到,当我将消息发送给父级时,我最终陷入了一个几乎无限循环(由于某种原因,它在多次迭代后确实会中断)。

【问题讨论】:

    标签: c++ winapi mfc tabcontrol


    【解决方案1】:

    我找到了答案:

    http://msdn.microsoft.com/en-us/library/eeah46xd.aspx

    基本上,您必须使用ON_NOTIFY_REFLECT_EX,然后从您的函数中返回 FALSE 才能触发父通知消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多