Con un control ActiveX en un contenedor de ventana del navegador, ¿cómo detecto cuando el usuario cambia la pestaña del control ActiveX

StackOverflow https://stackoverflow.com/questions/2338071

Pregunta

Tengo un control ActiveX que se coloca en un contenedor de navegador IE. El control crea otra ventana de diálogo que tiene propiedades ws_popup y ws_layered habilitadas para poder usar la función setlayeredwindowattributes (...) para lograr la transparencia con llave de color y la mezcla alfa encima del control.

Debido a que la propiedad ws_layered no se puede utilizar junto con la propiedad WS_CHILD, la administración de la visibilidad de la ventana no es automática. Necesito poder detectar cuándo el control ActiveX ya no es visible (es decir, porque la pestaña del navegador se cambió o minimizó) para que pueda cambiar la visibilidad de la ventana de superposición.

He intentado usar algunos de los mensajes de ventana existentes (WM_) para determinar este cambio, pero no los he visto disparar cuando se cambia la pestaña del navegador IE. ¿Alguien sabe la mejor manera de capturar cuando estos cambios de visibilidad están sucediendo?

¿Fue útil?

Solución

Si no estás viendo un WM_SHOWWINDOW Notificación, entonces su ventana se está cubriendo en lugar de oculta. No hay un mensaje de Windows que le indique cuándo se ha cubierto su control ActiveX. Debe buscar notificaciones del navegador.

O invente una solución que no use una ventana WS_POPUP. Quizás podrías usar Alfablendar Para hacer su propio color liquidación en lugar de confiar en el comportamiento de alfablend implícito de setlayeredwindowattributes.

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