Закрытие WebBrowser.

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
SeregaLBN
Сообщения: 23
Зарегистрирован: 17 фев 2004, 13:27
Откуда: Киев
Контактная информация:

В немодальном диалогов окне размещён WebBrowser. Это окно надо уничтожать сразу при его закрытии. Это я делаю так:

Код: Выделить всё

void CDialogWB::OnOK() 
{
   CDialog::OnOK();
   DestroyWindow();
}

void CDialogWB::OnCancel()
{
   CDialog::OnCancel();
   DestroyWindow();
}

void CDialogWB::OnClose()
{
   CDialog::OnClose();
   DestroyWindow();
}
Это всё работает.

Но мне также надо анализировать содержимое загруженой страницы, что я начинаю делать сразу после загрузки страницы в обработчике браузера DocumentComplete.
Ели содержимое страницы меня неустроит, то я должен уничтожить диалог. Что я делаю снова же вызовом DestroyWindow():

Код: Выделить всё

void CDialogWB::OnDocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT FAR* URL)
{
   BOOL bDestroy = TRUE;
   // ... Анализ содержимого страницы
   if (bDestroy)
      DestroyWindow();
}
Ну вот после такого кода, у меня и вылетает прога с "Unhandled exception in TestWBDestroy.exe (SHLWAPI.DLL): 0xC0000005: Access Violation.".
Поэтому поводу, собственно, и вопрос. Что я не так делаю? И, когда можно уничтожать этот диалог?
Серёга, любит баранью ногу.
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

Нет МСДН а под рукой но по моему диалог не надо дестроить а мона просто закрыть.
В SAD - все в SAD.
SeregaLBN
Сообщения: 23
Зарегистрирован: 17 фев 2004, 13:27
Откуда: Киев
Контактная информация:

Точно, ассинхронныое закрытие, с последующим уничтожением окна мне помогло:

Код: Выделить всё

void CDialogWB::OnDocumentCompleteExplorer1(LPDISPATCH pDisp, VARIANT FAR* URL) {
   PostMessage(WM_CLOSE);
}

void CDialogWB::OnClose() {
   CDialog::OnClose();
   DestroyWindow();
}
Серёга, любит баранью ногу.
Ответить