单文档多视图的实现方法

原创 2012年03月21日 11:54:07

本文利用 CMFCTabCtrl 实现多视图的选项卡式显示,程序截图如下:






第一步:新建两个对话框,并分别为其添加类 CFirstDlg、CSecondDlg;


第二步:分别对两个对话框的属性做如下设置:
NoInheritLayout          True
Visible                          True
Style                              Child


 第三步:在程序的View类头文件中包含两个对话框类的头文件,并分别为其声明一个变量:

CFirstDlg m_dlgFirst;
CSecondDlg m_dlgSecond;

第四步:在程序的View类头文件中声明一个 CMFCTabCtrl 类型的变量m_wndTabs:

CMFCTabCtrl m_wndTabs;

第五步:在程序的View类的 ‍OnCreate 函数中分别创建两个对话框、m_wndTabs,以及将对话框与 m_wndTabs 关联起来,代码如下:

CRect rectDummy;
rectDummy.SetRectEmpty();

if( !m_wndTabs.Create(CMFCTabCtrl::STYLE_3D_ONENOTE, rectDummy, this, 1, CMFCBaseTabCtrl::LOCATION_TOP) )
{
   TRACE0("未能创建Tab控件!");
   return -1;
}

m_dlgFirst = new CFirstDLg();
m_dlgSecond = new CSecondDlg();

if( !m_dlgFirst->Create(IDD_DIALOG1, &m_wndTabs) ||
   !m_dlgSecond->Create(IDD_DIALOG2, &m_wndTabs) )
{
   TRACE0("未能创建对话框!");
   return -1;
}

UpdateFonts();

m_wndTabs.AddTab( m_dlgFirst, "第一个", (UINT)0);
m_wndTabs.AddTab( m_dlgSecond, "第二个", (UINT)1);

m_wndTabs.EnableActiveTabCloseButton();

第六步:为程序的View类添加 WM_SIZE 消息响应,在消息的响应函数中设置m_wndTabs 的位置,代码如下:

‍m_wndTabs.SetWindowPos(NULL, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);

第七步:为‍程序的View类添加函数 ‍void UpdateFonts() ,在函数中分别设置对话框的字体,代码如下:

m_dlgFirst->SetFont(&afxGlobalData.fontRegular);
m_dlgSecond->SetFont(&afxGlobalData.fontRegular);

好了,编译运行,就可以看到如开头图片所示的程序了。希望大家举一反三,想出更好的方法!

MFC项目开发之单文档多视图实现

多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起...

单文档多视图

最后界面 1、创建单文档exe,支持切分窗口。 2、新建对话框资源 ID为IDD_TREEVIEW,Style=CHILD,BORDER=NONE, 删掉按...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

单文档多视图+MFC多文档多视图编程

http://wenku.baidu.com/view/61046a1810a6f524ccbf85eb.html

MFC单文档多视图的切换的3种实现

http://m.blog.csdn.net/blog/sunbing201213/8611021 MFC单文档多视图的切换的3种实现 MFC建立程序工程向导时最后一步,选择CFormView作为...
  • myiszjf
  • myiszjf
  • 2015年07月12日 13:22
  • 2015

MFC——仿TabCtrl实现多页显示

在MFC中有自带的TabCtrl可以实现多页,但是那个标签放在上面,不太美观,并且字体格式也比较固定,当然这个标签头是可以重绘的。...

MFC单文档绘图(二)——TabCtrl和CPropertySheet

想到这个问题就头疼,

VC中实现单文档切换多视图的方法

先在CMainFrame中包含原来系统生成的视图类 #include "****View.h" 注:当你包含系统生成的视图类的头文件时,要把原视图中的GetDocument()函数删去,否则会报错...
  • drmcty
  • drmcty
  • 2012年11月07日 09:07
  • 432

VC单文档实现多视图的方法

VC单文档实现多视图的方法 多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个...
  • myiszjf
  • myiszjf
  • 2015年07月13日 07:57
  • 850

VC单文档实现多视图的方法

多视图是VC开发中经常要用到的技术之一,一般地实现单文档多视图有两种方式1)通过视图分割的技术(使用CSplitterWnd实现),将窗口分割为多个部分,每个部分显示各自显示不同的视图,这种技术实现起...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单文档多视图的实现方法
举报原因:
原因补充:

(最多只允许输入30个字)