定义MFC类CHtmlViewExt,继承CHtmlView。
1、在vs2010中,用CHtmlViewExt作为doc视图类,关闭文档时会导致程序崩溃。
解决方法:覆盖 PostNcDestroy、OnDestroy两个函数。
(1)覆盖PostNcDestroy()
void CHtmlViewExt::PostNcDestroy()
{
//CHtmlView::PostNcDestroy();//注释掉自动生成的代码,防止CView 销毁自己导致关闭程序时崩溃
}
(2)覆盖OnDestroy()
void CHtmlViewExt::OnDestroy()
{
//CHtmlView::OnDestroy();
if (m_pBrowserApp)
{
m_pBrowserApp.Release();
m_pBrowserApp = NULL;
}
CWnd::OnDestroy(); //跳过CView的OnDestroy
}
2、上述修改方法,在vs2017中会导致文档关闭时程序崩溃,修改方法:
(1)不覆盖PostNcDestroy()
void CHtmlViewExt::PostNcDestroy()
{
CHtmlView::PostNcDestroy();//注释掉自动生成的代码,防止CView 销毁自己导致关闭程序时崩溃
}
(2)覆盖OnDestroy()
void CHtmlViewExt::OnDestroy()
{
//CHtmlView::OnDestroy();
if (m_pBrowserApp)
{
m_pBrowserApp.Release();
m_pBrowserApp = NULL;
}
CHtmlView::OnDestroy();
}
3、在vs2017中,打开文档,调用OnOpenDocument()时,程序也会崩溃。修改方法:覆盖OnSize函数。
void CHtmlViewExt::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy); //不能用CHtmlViewExt.OnSize()。
}