Pregunta

Tengo un CTabCtrl personalizado que estoy tratando de personalizar (para cambiar automáticamente las páginas).

Si manejo ON_NOTIFY_REFLECT (TCN_SELCHANGE, ...) en el control de mi pestaña, ON_NOTIFY (TCN_SELCHANGE, ...) no es recibido por la clase padre.

¿Cómo puedo recibir mensajes de notificación en las clases para niños y padres?

Actualmente estoy usando una "solución" " de enviar manualmente el mensaje WM_NOTIFY a la clase primaria:

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: probé tanto * pResult = 0 como * pResult = 1 pero aún así no envía el mensaje al padre. Además, he notado que cuando envío el mensaje al padre, termino en un bucle casi infinito (por alguna razón, se rompe después de varias iteraciones).

¿Fue útil?

Solución

He encontrado la respuesta:

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

Básicamente, debe usar ON_NOTIFY_REFLECT_EX y luego devolver FALSE desde su función para permitir que se active el mensaje de notificación principal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top