标签:style class blog code http com
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { CPaintManagerUI::SetInstance(hInstance); HRESULT Hr = ::CoInitialize(NULL); if( FAILED(Hr) ) return 0; CDuiFrameWnd *pFrame = new CDuiFrameWnd; // 这里必须用new,否则有ActiveX控件时,关闭窗口会产生崩溃 pFrame->Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); pFrame->CenterWindow(); pFrame->ShowModal(); delete pFrame; ::CoUninitialize(); return 0; }
其根本原因是ActiveX控件使用了类似COM的方式,而却没有控制好作用域,所以导致析构时,CActiveXCtrl的成员变量m_pViewObject所指向的内存已经无效,因此产生了崩溃。之所以用new的方式不会崩溃,是因为new出来的内存,即使对象析构后,其内存还是有效的。
3 CActiveXUI的一个Bug,布布扣,bubuko.com
标签:style class blog code http com
原文地址:http://www.cnblogs.com/a9999/p/3799489.html