Pregunta

Tengo este no modal cuadro de diálogo MFC que se incorpora un explorador web Internet Explorer de control.

El control se deriva directamente de CWnd con ActiveX contenedores generado por Visual Studio, y yo mapa a la CDialog el uso de sólo una DDX_Control(pDX, IDC_EXPLORER, m_explorer);.

Tengo 2 problemas.

Problema #1:

El ser no modal, puedo iniciar y detener el diálogo en mi propio placer con la nuevo/Crear(), entonces DestroyWindow()/eliminar(en PostNcDestroy).

Problemas comienzan cuando el IE de control comienza a cargar un vídeo Flash (regular YouTube cosas):cuando uno se cierra, destruyendo así el diálogo, el vídeo todavía carga!A la derecha hasta que esté completamente en caché.El Flash ActiveX hilo que aún persiste y sigue funcionando incluso cuando el padre de diálogo ha pasado PostNcDestroy y toda la memoria fue liberado.

Qué hacer?¿Cómo os deis a 'matar' a ese niño de control web y todos sus hilos?

Problema #2:

El control de explorador web cubre toda el área del cuadro de diálogo.No puedo interceptar cualquier OnMouseMove() - en la matriz del cuadro de diálogo o en el navegador de asignación de clase!¿Por qué?

Gracias!


"La limpieza"

"eliminar" en la PostNcDestroy() - y llamando a la base de func de curso.Debería ser más?Qué?No debería el diálogo con gracia cuidar de sus hijos?

Traté de llamar explícitamente DestroyWindow en el control web, o enviar y publicar mensajes de él como WM_DESTROY, el mensaje wm_close, incluso WM_QUIT - pero nada - la misma cosa.

Problema #2:

No, como sangría, el control se lleva todo el espacio y que es en la parte superior así que supongo que cualquier acción del ratón no se transmitan 'abajo' :)?Pero entonces, ¿por qué no su propia OnMouseMove se llama?Porque va directamente de CWnd?Estoy perdido...

¿Fue útil?

Solución

problema 1) intentar myBrowser.navigate("about:blank") antes de la destrucción de la ventana.

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