У меня есть это немодальное диалоговое окно MFC, в которое встроен элемент управления веб-браузера Internet Explorer.
Элемент управления получен непосредственно из CWnd
с обертками ActiveX, сгенерированными Visual Studio, и я сопоставляю его с CDialog
, используя только DDX_Control(pDX, IDC_EXPLORER, m_explorer);
.
У меня 2 проблемы.
Задача № 1:
Будучи немодальным, я запускаю и останавливаю диалог по своему усмотрению, используя new / Create (), затем DestroyWindow () / delete (в PostNcDestroy).
Проблема начинается, когда элемент управления IE начинает загружать Flash-видео (обычные материалы YouTube): когда вы закрываете, уничтожая диалог, видео все равно загружается! Прямо до полного кеширования. Поток Flash ActiveX все еще остается и продолжает работать, даже если родительский диалог прошел PostNcDestroy и вся память была освобождена.
Что делать? Как вы «убиваете» этот дочерний веб-элемент управления и все его потоки?
Задача № 2:
Элемент управления веб-браузера охватывает всю область диалога. Я не могу перехватить любой OnMouseMove()
- в родительском диалоге или в классе отображения веб-браузера! Что дает?
Спасибо!
"Очистка"
«удалить это» в PostNcDestroy () - и, конечно, вызывать базовую функцию. Это должно быть больше? Какие? Разве диалог не должен заботиться о своих детях?
Я пытался явно вызвать DestroyWindow на веб-элементе управления или отправить / опубликовать ему такие сообщения, как WM_DESTROY, WM_CLOSE, даже WM_QUIT - но ничего - та же сделка.
Задача № 2:
Нет, как и с отступом, элемент управления занимает все пространство, и он находится сверху, поэтому я думаю, что любое действие мыши не передается «ниже» :)? Но тогда почему его собственный OnMouseMove не вызывается? Потому что идет прямо из CWnd? Я потерян ...