Cómo manejar los mensajes de notificación en child & amp; clases para padres?
-
06-07-2019 - |
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).
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.