单文档多视图界面

nicolas16 2007-04-18 10:06:04
我想建立一个基于单文档的工程,要有启动登陆的对话框和另外两个完成主要功能的对话框,而且这三个对话框之间要可以来回切换,请问怎么实现好?
...全文
429 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuronca 2007-04-18
  • 打赏
  • 举报
回复
建立3个view,都是FrameWnd的子窗口即可,然后在FrameWnd里面控制切换就可以了
双杯献酒 2007-04-18
  • 打赏
  • 举报
回复
前两天刚刚看看了这个.
没有楼上理解的深刻.
skufly 2007-04-18
  • 打赏
  • 举报
回复
http://www.win16.com/textbook/article.asp?id=1186
一般常用的有两种方案,一是在多个View中切换,而是用CSplitterWnd的切分视图,不过基本原理都是重载FrameWnd::OnCreateClient函数,生成自己的视图.
比如:
CMainFrame::OnCreateClient(...)
{
CCreateContext cc;
cc.m_pCurrentDoc = pContext->m_pCurrentDoc;
cc.m_pNewViewClass=RUNTIME_CLASS(CView1);
m_pView1=(CView1*)CreateView(&cc,ID_VIEW1);
cc.m_pNewViewClass=RUNTIME_CLASS(CView2);
m_pView2=(CView2*)CreateView(&cc,ID_VIEW2);
SwitchToView(ID_VIEW1);
return TRUE;
}

void CMainFrame::SwitchToView(int nID)
{
m_pView1->SetDlgCtrlID(ID_VIEW1);
m_pView1->ShowWindow(SW_HIDE);
m_pView2->SetDlgCtrlID(ID_VIEW2);
m_pView2->ShowWindow(SW_HIDE);
if (nID==ID_VIEW1)
{
m_pView1->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_pView1->ShowWindow(SW_SHOW);
}
else
{
m_pView2->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_pView2->ShowWindow(SW_SHOW);
}
RecalcLayout();
}

如果是用分割视图的话简单一些.首先给MainFrame添加一个CSplitterWnd m_wndSplitter成员.
CMainFrame::OnCreateClient(...)
{
m_wndSplitter.CreateStatic(this,1,2);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CView1),CSize(200,400),pConext);
m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CView2),CSize(200,200),pContext);
return TRUE;
}
syy64 2007-04-18
  • 打赏
  • 举报
回复
切换得动作就是显示和隐藏对话框。
长尾巴的悟空 2007-04-18
  • 打赏
  • 举报
回复
搞几个对话框的资源不就好了?

15,979

社区成员

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

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