2个formview怎样在程序开始的时候就显示其中的一个?

rayyang2000 2000-03-27 02:21:00
我用的是csplitterwnd且分的窗口,想在其中的一部分显示formview,在程序开始的时候显示一个,等到用户选择的时候再显示另外一个.
现在的代码需要在程序运行开始的时候手动选择其中的一个formview.
谢谢!
...全文
110 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
telan 2000-03-28
  • 打赏
  • 举报
回复
这是一个手动切换FormView的方法,不用每次创建、删除。
这里的例子是没有切分视的,原理应该差不多。
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);
}


Sniper 2000-03-28
  • 打赏
  • 举报
回复
Sorry, 用DeleteView和CreateView,好象这个问题你已经解决了。
Sniper 2000-03-28
  • 打赏
  • 举报
回复
记地不太清楚。可以用DestoryWindow()和CreateView()配对切换切分窗口中显示的视。至于程序运行时的选择,应该可以在CMainFrame::OnCreateClient()方法的开始部分插入一段对话框交互代码来完成。

16,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧