如何显示两个FORMVIEW呀?

mcg 2003-06-02 08:04:04
SDI的程序框架,想在里面显示多个FORMVIEW,由菜单控制,如何做呀?急!!!
...全文
59 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuda 2003-06-02
  • 打赏
  • 举报
回复
我给出我的例子,其中的名称你要改一下,我是照搬下来的,这里控制三块视图。
在MainFrm.cpp中:

void CMainFrame::OnButtonComm() //这个可以换成菜单,我用的是按钮
{
if(GetActiveView()->IsKindOf(RUNTIME_CLASS(CCzglView)))
return;
ChangeForm(1);
}
void CMainFrame::OnButtonDatabase()
{
if(GetActiveView()->IsKindOf(RUNTIME_CLASS(CDatabaseView)))
return;
ChangeForm(2);
}
void CMainFrame::OnButtonTable()
{
if(GetActiveView()->IsKindOf(RUNTIME_CLASS(CTableView)))
return;
ChangeForm(3);
}
void CMainFrame::ChangeForm(int nForm)
{
CView *pold=GetActiveView();
CView *pnew=(CView*)GetDlgItem(nForm);
if(pnew==NULL)
{
switch(nForm)
{
case 1:
pnew=(CView*)new CCzglView;
break;
case 2:
pnew=(CView*)new CDatabaseView;
break;
case 3:
pnew=(CView*)new CTableView;
break;
}
CCreateContext context;
context.m_pCurrentDoc=pold->GetDocument();
pnew->Create(NULL,NULL,0L,CFrameWnd::rectDefault,this,nForm,&context);
pnew->OnInitialUpdate();
}
SetActiveView(pnew);
pnew->ShowWindow(SW_SHOW);
pold->ShowWindow(SW_HIDE);
if(pold->GetRuntimeClass()==RUNTIME_CLASS(CCzglView))
pold->SetDlgCtrlID(1);
else if(pold->GetRuntimeClass()==RUNTIME_CLASS(CDatabaseView))
pold->SetDlgCtrlID(2);
else if(pold->GetRuntimeClass()==RUNTIME_CLASS(CTableView))
pold->SetDlgCtrlID(3);
pnew->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
RecalcLayout();
}

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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