如何处理儿童和儿童的通知消息家长班?

时间:2009-03-09 17:08:16

标签: c++ winapi mfc tabcontrol

我有一个自定义的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但它仍然没有将消息发送到父级。 另外,我注意到当我将消息发送给父节点时,我最终会进入一个几乎无限循环(出于某种原因,它会在几次迭代后突然出现)。

1 个答案:

答案 0 :(得分:2)

我找到了答案:

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

基本上你必须使用ON_NOTIFY_REFLECT_EX,然后从你的函数返回FALSE以启用父通知消息。