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?

¿Fue útil?

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.

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