Pergunta

Eu tenho um CTabCtrl costume que eu estou tentando personalizar (para páginas automaticamente mudança).

Se eu lidar com ON_NOTIFY_REFLECT(TCN_SELCHANGE, ...) no meu controle guia, ON_NOTIFY(TCN_SELCHANGE, ...) não é recebido pela classe pai.

Como posso receber tanto mensagens de notificação nas classes pai e filho?

Atualmente estou usando uma "solução alternativa" de enviar manualmente a mensagem WM_NOTIFY para a classe pai:

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));
    }
}

Editar: Eu tentei tanto * pResult = 0 e * pResult = 1, mas ele ainda não enviar a mensagem para o pai. Além disso, tenho notado que quando eu enviar a mensagem para o pai que eu acabar em um ciclo de quase infinita (por alguma razão ele não sair depois de várias iterações).

Foi útil?

Solução

Eu encontrei a resposta:

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

Basicamente, você tem que usar ON_NOTIFY_REFLECT_EX e depois retornar FALSE de sua função para permitir que o pai notificar mensagem a ser demitido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top