Domanda

Ho questa finestra di dialogo MFC non modale che incorpora un controllo del browser Web Internet Explorer.

Il controllo deriva direttamente da CWnd con i wrapper ActiveX generati da Visual Studio e lo mappo al file CDialog utilizzando solo a DDX_Control(pDX, IDC_EXPLORER, m_explorer);.

Ho 2 problemi.

Problema n. 1:

Essendo non modale, avvio e interrompo la finestra di dialogo a mio piacimento utilizzando new/Create(), quindi DestroyWindow()/delete(in PostNcDestroy).

I problemi iniziano quando il controllo IE inizia a caricare un video Flash (roba normale di YouTube):quando si chiude, distruggendo così la finestra di dialogo, il video si carica comunque!Fino a quando non sarà completamente memorizzato nella cache.Il thread Flash ActiveX persiste e continua a essere eseguito anche quando la finestra di dialogo principale ha superato PostNcDestroy e tutta la memoria è stata liberata.

Cosa fare?Come puoi veramente "uccidere" quel controllo web figlio e tutti i suoi thread?

Problema n. 2:

Il controllo del browser Web copre l'intera area della finestra di dialogo.Non posso intercettarne nessuno OnMouseMove() - nella finestra di dialogo principale o nella classe di mappatura del browser web!Cosa dà?

Grazie!


"Ripulire"

"elimina questo" in PostNcDestroy() - e ovviamente chiamando la funzione base.Dovrebbe essere di più?Che cosa?Il dialogo non dovrebbe prendersi cura con grazia dei suoi figli?

Ho provato a chiamare esplicitamente DestroyWindow sul controllo web o a inviargli/pubblicare messaggi come WM_DESTROY, WM_CLOSE e persino WM_QUIT, ma niente, stesso affare.

Problema n. 2:

No, come nel caso del rientro, il controllo occupa tutto lo spazio ed è in alto, quindi immagino che qualsiasi azione del mouse non venga trasmessa "sotto" :)?Ma allora perché il suo OnMouseMove non viene chiamato?Perché va direttamente da CWnd?Mi sono perso...

È stato utile?

Soluzione

problema 1) prova myBrowser.navigate("about:blank") prima di distruggere la finestra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top