工程编译无问题,单步调试也无问题,新添加文件后编译正常,但切换窗口报错:File: dbgheap.c line: 1044 。跟踪显示 pOldActiveView->DestroyWindow()这里有问题,代码如下,原工程备份跟踪还是没有问题,同样的代码,为啥现在报错了,添加了新工程文件的原因吗?内存存在泄露了?实在不明白了,请各位帮帮忙!BOOL CTypeDoc::SwitchToFormView(CRuntimeClass *pNewViewClass)
{
CFrameWnd* pMainWnd=(CFrameWnd*)AfxGetMainWnd();
CView* pOldActiveView=pMainWnd->GetActiveView();
if(pOldActiveView->IsKindOf(pNewViewClass))
{
pOldActiveView->OnInitialUpdate();
return TRUE;
}
::SetWindowLong(pOldActiveView->m_hWnd,GWL_ID,0);
CCreateContext context;
context.m_pNewViewClass=pNewViewClass;
context.m_pCurrentFrame=pMainWnd;
context.m_pNewDocTemplate = NULL;
context.m_pCurrentDoc=this;
CFormView* pNewView=STATIC_DOWNCAST(CFormView,pMainWnd->CreateView(&context));
if(pNewView!=NULL)
{
pNewView->ShowWindow(SW_SHOW);
pNewView->OnInitialUpdate();
pMainWnd->SetActiveView(pNewView);
pMainWnd->RecalcLayout();
m_pView=pNewView;
pOldActiveView->DestroyWindow();
return TRUE;
}
return FALSE;
}
{
CFrameWnd* pMainWnd=(CFrameWnd*)AfxGetMainWnd();
CView* pOldActiveView=pMainWnd->GetActiveView();
if(pOldActiveView->IsKindOf(pNewViewClass))
{
pOldActiveView->OnInitialUpdate();
return TRUE;
}
::SetWindowLong(pOldActiveView->m_hWnd,GWL_ID,0);
CCreateContext context;
context.m_pNewViewClass=pNewViewClass;
context.m_pCurrentFrame=pMainWnd;
context.m_pNewDocTemplate = NULL;
context.m_pCurrentDoc=this;
CFormView* pNewView=STATIC_DOWNCAST(CFormView,pMainWnd->CreateView(&context));
if(pNewView!=NULL)
{
pNewView->ShowWindow(SW_SHOW);
pNewView->OnInitialUpdate();
pMainWnd->SetActiveView(pNewView);
pMainWnd->RecalcLayout();
m_pView=pNewView;
pOldActiveView->DestroyWindow();
return TRUE;
}
return FALSE;
}
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法