VC2003.net, WinXP
程序没有使用 文档/视图的框架, 直接只用了Frame, 我想在程序中再动态创建CHtmlView, CTreeView, CListView, CFramView, 在后面的操作中,要对这些动态创建的视图拆分和切换。请给个思路阿,谢谢
程序没有使用 文档/视图的框架, 直接只用了Frame, 我想在程序中再动态创建CHtmlView, CTreeView, CListView, CFramView, 在后面的操作中,要对这些动态创建的视图拆分和切换。请给个思路阿,谢谢
void CMainFrame::SwitchView(int nForm)
{
CView *pOldActiveView = GetActiveView(); //保存旧视图
CView *pNewActiveView = (CView*)GetDlgItem(nForm); //取得新视图
if(pNewActiveView == NULL)
{
switch(nForm)
{
case IDD_ALLDEV_DIALOG :
pNewActiveView =(CView*) AllDevView;
break;
case IDD_ONEDEV_DIALOG :
pNewActiveView = (CView*)new COneDevView;
break;
}
CCreateContext context; //将文挡和视图相连
context.m_pCurrentDoc=pOldActiveView->GetDocument();
if(pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CAllDevView))
pNewActiveView->Create(NULL, NULL, WS_BORDER|WS_CHILD ,
CFrameWnd::rectDefault, this, nForm, &context);
pNewActiveView->OnInitialUpdate();
}
SetActiveView(pNewActiveView); //改变活动的视图
pNewActiveView->ShowWindow(SW_SHOW); //显示新的视图
pOldActiveView->ShowWindow(SW_HIDE); //隐藏旧的视图 if(pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CAllDevView))
pOldActiveView->SetDlgCtrlID(IDD_ALLDEV_DIALOG); else if(pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(COneDevView))
pOldActiveView->SetDlgCtrlID(IDD_ONEDEV_DIALOG); pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
delete pOldActiveView; //删除旧视图 RecalcLayout(); //调整框架窗口}