记地不太清楚。可以用DestoryWindow()和CreateView()配对切换切分窗口中显示的视。至于程序运行时的选择,应该可以在CMainFrame::OnCreateClient()方法的开始部分插入一段对话框交互代码来完成。
解决方案 »
- 很多win32应用软件的日志或是配置文件都是用.db文件保存,这是什么数据库
- 过于程序多国语言化,CString的内存的担心。
- mfc中如何将菜单和一个窗口连接起来???
- 求教,关于socket客户端(win2000):closesocket()后,服务器(QNX)会收到“对方要求复位”的信息,为什么?
- 关于静态文本控件(Static Text)
- 如何在网络多连接中对一个数据表进行锁定
- 各位大哥,帮半我!关于VC中生成Excel表(需要控制列宽、字体)!
- 有关重复打开bmp文件的问题
- 请问,CJ60和BCGControlBar库,哪个用的更多一些?哪里有这方面的详细资料??
- CWnd::PostMessage()是否只将消息发往CWnd的消息队列?
- 轻易获取20分!
- 我设了很多变量,都是按数字递增的,我想在循环里用循环变量的改变来使用不同的变量,该怎么做呢?
这里的例子是没有切分视的,原理应该差不多。
void CMainFrame::SwitchToForm(int nForm)
{
CView* pOldActiveView = GetActiveView();
CView* pNewActiveView = (CView*)GetDlgItem(nForm);
if (pNewActiveView == NULL)
{
switch(nForm)
{
case IDW_BP_FORM:
pNewActiveView = (CView*)new CBPForm;
break;
case IDW_LH_FORM:
pNewActiveView = (CView*)new CLHForm;
break;
case IDW_FX_FORM:
pNewActiveView = (CView*)new CFXForm;
break;
case IDW_XS_FORM:
pNewActiveView = (CView*)new CXSForm;
break;
case IDW_EMPTY_FORM:
pNewActiveView = (CView*)new CEmptyForm;
break;
default:
pNewActiveView = (CView*)new CEmptyForm;
break;
}
CCreateContext context;
context.m_pCurrentDoc = pOldActiveView->GetDocument();
pNewActiveView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault,this, nForm, &context);
pNewActiveView->OnInitialUpdate();
} SetActiveView(pNewActiveView);
pNewActiveView->ShowWindow(SW_SHOW);
pOldActiveView->ShowWindow(SW_HIDE);
//pOldActiveView->SetDlgCtrlID(pOldActiveView->GetRuntimeClass() == RUNTIME_CLASS(CCourseForm) ?IDW_COURSE_FORM : IDW_SECTION_FORM);
if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CBPForm))
{
pOldActiveView->SetDlgCtrlID(IDW_BP_FORM);
}
else if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CLHForm))
{
pOldActiveView->SetDlgCtrlID(IDW_LH_FORM);
}
else if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CFXForm))
{
pOldActiveView->SetDlgCtrlID(IDW_FX_FORM);
}
else if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CXSForm))
{
pOldActiveView->SetDlgCtrlID(IDW_XS_FORM);
}
else if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CCHForm))
{
pOldActiveView->SetDlgCtrlID(IDW_CH_FORM);
}
else if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CEmptyForm))
{
pOldActiveView->SetDlgCtrlID(IDW_EMPTY_FORM);
}
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
}//手动切换,响应菜单(其中的一个)
void CMainFrame::OnAdminBp()
{
// TODO: Add your command handler code here
if (GetActiveView()->IsKindOf(RUNTIME_CLASS(CBPForm)))
return; // already active
SwitchToForm(IDW_BP_FORM);
}