描述:
我在CDialog中添加一个Web Browser Activex控件,实现了在OnNewWindow2可以打开新窗口
新窗口是通过new myDialog() 等方式创建,可以在新窗口打开先前窗口点击的页面。
问题:
在关闭新打开窗口后,需要对刚才 通过New创建的窗口对象进行销毁:
销毁代码:
先Navigate2(_T("about:blank");
等DocumentComplete后
在SendMessage(WM_CLOSE)关闭窗口!;
在对其窗口DestroyWindow();
但是在 DestroyWindow时出现如下错误:
shdocvw.dll!IUnknown_SafeReleaseAndNullPtr<IHTMLElement>() + 0x14 bytes
shdocvw.dll!CBaseBrowser2::~CBaseBrowser2() + 0x130 bytes
shdocvw.dll!CAggregatedUnknown::CUnkInner::Release() + 0x59bc bytes
shdocvw.dll!CAggregatedUnknown::Release() + 0x11 bytes
shdocvw.dll!CWebBrowserOC::v_WndProc() - 0x282b bytes
shdocvw.dll!CImpWndProc::s_WndProc() + 0x3f bytes
user32.dll!_InternalCallWinProc@20() + 0x28 bytes
user32.dll!_UserCallWinProcCheckWow@32() + 0xa2 bytes
user32.dll!_DispatchClientMessage@20() + 0x4b bytes
user32.dll!___fnDWORD@4() + 0x24 bytes
ntdll.dll!_KiUserCallbackDispatcher@12() + 0x2e bytes
user32.dll!_NtUserDestroyWindow@4() + 0xc bytes
shdocvw.dll!CWebBrowserOC::_OnSetClientSite() + 0xbf bytes
shdocvw.dll!CShellEmbedding::SetClientSite() + 0x5c bytes
shdocvw.dll!CShellOcx::SetClientSite() + 0x23 bytes
ddsxds23.exe!COleControlSite::~COleControlSite() Line 107
C++
ddsxds23.exe!COleControlSite::`scalar deleting destructor'() + 0x11 bytes
C++
ddsxds23.exe!COleControlSiteOrWnd::~COleControlSiteOrWnd() Line 161 + 0x24 bytes
C++
ddsxds23.exe!COleControlSiteOrWnd::`scalar deleting destructor'() + 0x11 bytes
C++
> ddsxds23.exe!COleControlContainer::~COleControlContainer() Line 192 + 0x1c bytes
C++
ddsxds23.exe!COleControlContainer::`scalar deleting destructor'() + 0x11 bytes
C++
ddsxds23.exe!CWnd::OnDestroy() Line 786 + 0x24 bytes
C++
ddsxds23.exe!CWnd::OnWndMsg(unsigned int message=2, unsigned int wParam=0, long lParam=0, long * pResult=0x0012f53c) Line 2042
C++
ddsxds23.exe!CWnd::WindowProc(unsigned int message=2, unsigned int wParam=0, long lParam=0) Line 1755 + 0x20 bytes
C++
ddsxds23.exe!AfxCallWndProc(CWnd * pWnd=0x063d6c58, HWND__ * hWnd=0x000104ac, unsigned int nMsg=2, unsigned int wParam=0, long lParam=0) Line 240 + 0x1c bytes
C++
ddsxds23.exe!AfxWndProc(HWND__ * hWnd=0x000104ac, unsigned int nMsg=2, unsigned int wParam=0, long lParam=0) Line 403
C++
user32.dll!_InternalCallWinProc@20() + 0x28 bytes
user32.dll!_UserCallWinProcCheckWow@32() + 0xa2 bytes
user32.dll!_DispatchClientMessage@20() + 0x4b bytes
user32.dll!___fnDWORD@4() + 0x24 bytes
ntdll.dll!_KiUserCallbackDispatcher@12() + 0x2e bytes
user32.dll!_NtUserDestroyWindow@4() + 0xc bytes
ddsxds23.exe!Cwinlnet3Dlg::OnTimer(unsigned int nIDEvent=10) Line 1984 + 0xf bytes
C++
ddsxds23.exe!CWnd::OnWndMsg(unsigned int message=275, unsigned int wParam=10, long lParam=0, long * pResult=0x0012f9c8) Line 2046
C++
ddsxds23.exe!CWnd::WindowProc(unsigned int message=275, unsigned int wParam=10, long lParam=0) Line 1755 + 0x20 bytes
C++
ddsxds23.exe!AfxCallWndProc(CWnd * pWnd=0x0012fd54, HWND__ * hWnd=0x00030402, unsigned int nMsg=275, unsigned int wParam=10, long lParam=0) Line 240 + 0x1c bytes
C++
ddsxds23.exe!AfxWndProc(HWND__ * hWnd=0x00030402, unsigned int nMsg=275, unsigned int wParam=10, long lParam=0) Line 403
C++
user32.dll!_InternalCallWinProc@20() + 0x28 bytes
user32.dll!_UserCallWinProcCheckWow@32() + 0xa2 bytes
user32.dll!_DispatchMessageWorker@8() + 0xc8 bytes
user32.dll!_DispatchMessageW@4() + 0xf bytes
ddsxds23.exe!AfxInternalPumpMessage() Line 183
C++
ddsxds23.exe!CWinThread::PumpMessage() Line 900
C++
ddsxds23.exe!AfxPumpMessage() Line 190 + 0xd bytes
C++
ddsxds23.exe!CWnd::RunModalLoop(unsigned long dwFlags=4) Line 4386 + 0x5 bytes
C++
ddsxds23.exe!CDialog::DoModal() Line 584 + 0xc bytes
C++
ddsxds23.exe!Cwinlnet3App::InitInstance() Line 133 + 0xb bytes
C++
ddsxds23.exe!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00020e56, int nCmdShow=1) Line 37 + 0xd bytes
C++
ddsxds23.exe!wWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpCmdLine=0x00020e56, int nCmdShow=1) Line 34
C++
ddsxds23.exe!__tmainCRTStartup() Line 263 + 0x2c bytes
C
ddsxds23.exe!wWinMainCRTStartup() Line 182
C
kernel32.dll!_BaseProcessStart@4() + 0x23 bytes