首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

带ActiveX控件的窗口的销毁有关问题!高手帮忙看看

2013-09-29 
带ActiveX控件的窗口的销毁问题!高手帮忙看看!我在CDialog中添加一个Web Browser Activex控件,实现了在OnN

带ActiveX控件的窗口的销毁问题!高手帮忙看看!
我在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
[解决办法]
用PostMessage(WM_CLOSE)试试

热点排行