Cómo crear una ventana no interactiva en MFC
-
09-06-2019 - |
Pregunta
En mi aplicación tengo una ventana que aparece con pequeños mensajes (piense de manera similar a la información sobre herramientas).Esta ventana utiliza los atributos en capas para dibujar fondos alfa, etc.
Si tengo varias de estas ventanas abiertas a la vez y hago clic en una con el mouse, cuando desaparecen hacen que mi aplicación pierda el foco (cambia el foco a la aplicación detrás de la actual).
¿Cómo detengo cualquier interacción en mi ventana?
Solución 2
Después de jugar con el WM_NCACTIVATE
mensaje sin suerte, anulé el WM_SETFOCUS
mensaje:
void CMyWindow::OnSetFocus(CWnd* pOldWnd)
{
if (pOldWnd != NULL)
{
pOldWnd->SetFocus();
}
}
Eso parece funcionar.¡Aunque no tengo idea de por qué funciona!Se aceptan comentarios sobre ese tema.
Otros consejos
Funciona porque OnSetFocus (como muchos de los métodos On*) le brinda la oportunidad de anticiparse a una acción antes de que realmente ocurra.En realidad, el foco nunca cambia a su ventana no interactiva.