关闭

单文档多视图的实现方法

2388人阅读 评论(0) 收藏 举报

本文利用 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);

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

0
2

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:32145次
    • 积分:524
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:1篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论