在MFC当中使用Tab Control控件切换不同的界面,使用起来会复杂一些,至少是比Qt中的Tab Widget复杂得多。我接下来会以一个MFC对话框应用程序为例子,说明Tab Control控件的简单使用方法。

1.1建立一个MFC对话框应用程序,在对话框中拖入Tab Control控件,效果如下:

1.2在对话框类中,声明一个CTabCtrl变量:

CTabCtrl m_tab;
变量m_tab用来与对话框中的Tab Control控件交互,为此要在DoDataExchange函数中加入DDX_Control语句:
DDX_Control(pDX, IDC_TAB_TEST, m_tab);

2.1在资源中插入两个对话框,作为Tab Control控件切换的界面,然后必须将这两个对话框的Border属性设置为None,Style设置为Child,设置后的效果如下图所示:

2.2为创建的两个对话框建立两个类,如CTestDlg1,CTestDlg2,添加类的方法:右击对话框界面,在弹出框中选择添加类;

3.1在Tab Control控件所在的对话框类的头文件中添加以下内容并添加切换页面对话框的头文件:

public:
        int m_CurSelTab; 
        CTestDlg1 m_page1; 
        CTestDlg2 m_page2; 
        CDialog* pDialog[2];  //用来保存对话框对象指针

3.2在对话框类的初始化函数中需要把CTestDlg1、CTestDlg2和Tab Control关联起来,并保存页面地址,设置初始页面,在OnInitDialog()中添加以下实现代码:

//为Tab Control增加两个页面
    m_tab.InsertItem(0, _T("测试1"));
    m_tab.InsertItem(1, _T("测试2"));
 
    //创建两个对话框
    m_page1.Create(IDD_DIALOG_TEST1, &m_tab);
    m_page2.Create(IDD_DIALOG_TEST2, &m_tab);
    //设定在Tab内显示的范围
    CRect rc;
    m_tab.GetClientRect(rc);
    rc.top += 20;
    rc.bottom -= 0;
    rc.left += 0;
    rc.right -= 0;
    m_page1.MoveWindow(&rc);
    m_page2.MoveWindow(&rc);
 
    //把对话框对象指针保存起来
    pDialog[0] = &m_page1;
    pDialog[1] = &m_page2;
    //显示初始页面
    pDialog[0]->ShowWindow(SW_SHOW);
    pDialog[1]->ShowWindow(SW_HIDE);
    //保存当前选择
    m_CurSelTab = 0;
这里我们用了一个CDialog指针数组来进行保存Tab Control的每个页面,数组的大小是Tab Control页面的个数,数组下标对应着每个页面的索引(这样方便快速存取)。

3.3为Tab Control添加消息处理程序,双击Tab Control控件,自动进入消息处理程序代码:
void CTabControlTestDlg::OnTcnSelchangeTabTest(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO: 在此添加控件通知处理程序代码
 
    //把当前的页面隐藏起来
        pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
        //得到新的页面索引
    m_CurSelTab = m_tab.GetCurSel();
        //把新的页面显示出来
        pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);
 
    *pResult = 0;
}

本文参考的资料有:http://blog.csdn.net/hustspy1990/article/details/5425365

MFC-Tab Control控件使用相关推荐

  1. MFC中使用TAB Control控件

    2019独角兽企业重金招聘Python工程师标准>>> MFC中使用TAB Control控件 MFC中使用TAB Control控件(转) 假如我现在有个SDI程序,View是Fo ...

  2. 在VC++中使用Tab Control控件

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 系统环境 ...

  3. Tab Control控件的详细使用

    1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置I ...

  4. VC++ Tab Control控件的使用

    1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置I ...

  5. VC++ Tab Control控件的基本用法

    VC++ Tab Control控件的基本用法 该程序过程很简单,但是却说明了Tab Control控件的基本用法. 1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后 ...

  6. C++ MFC picture control控件按比例显示任意图片文件(jpg、bmp等)

    前段时间做大一专业实训,用MFC做一个图片查看类程序,对于从来没有学过C++的我们来说显示一张图片就是一件很难的事情了,作为小组里唯一一个MFC设计者,我从网上有很多关于MFC图片控件显示的文章,但大 ...

  7. MFC中Tab Control控件的使用

    一.创建TabControl控件主要分为以下步骤 1.1将TabControl控件拖入基本对话框中,并且创建一个控件变量m_tab 1.2创建两个子对话框,ID分别改为IDD_DIALOG_PAGE1 ...

  8. MFC List Control 控件添加单元格编辑,实现可编辑重写

    在实现随机生成四则运算的个人项目中,目前已经完成基本功能,想要把程序变成一个Windows界面的程序.原本以为学习过MFC,应该很快就能完成.但是由于以前用的都是VC6.0,这次用了VS2010,稍微 ...

  9. VS 2019 MFC Edit Control控件自绘带软键盘

    实现功能:点击Edit控件后弹出软键盘,并能设置软键盘的输入最大者和最小值,软键盘采用非模态对话框创建,软键盘按钮字体颜色.背景颜色可以改变.Edit控件获得焦点和失去焦点后字体颜色和背景颜色动态可变 ...

  10. 怎样给Tab Control控件加上背景颜色或图片

    如果不懂Tab控件添加选项卡(属性页)的请看这篇文章:http://blog.csdn.net/qq_18297675/article/details/50991413 这里我就直接在添加好选项卡的基 ...

最新文章

  1. UA MATH571B 试验设计 2k析因设计理论下
  2. [北京微软技术直通车]前端 Visual Studio Code 开发 Angular 与亿级 SQL Servern
  3. 中国内置扬声器市场趋势报告、技术动态创新及市场预测
  4. java智能社下载_08 深入javascript
  5. 「双拼输入法安利」清欢实践了四个月,真的好用!
  6. ADC的内部结构与主要参数
  7. 如何删除tmp计算机桌面,win10系统下tmp临时文件删除不了如何解决
  8. 网页版2048html制作,基于HTML+CSS+JS的网页版2048的实现
  9. AdGuard过滤规则
  10. GooglePlay马甲包过审详细流程
  11. 刀片服务器在哪看cpu型号,了解认识刀片服务器
  12. python在电力系统中的应用_python电力
  13. 评测三款最流行的txt阅读器(Mac适用)
  14. JavaScript脚本实现单条微博自动重复转发
  15. 封装原声ajax,原生AJAX封装的简单实现
  16. 专访杨强:从 0 到 1,迁移学习如何登上今日高峰?
  17. 一个完整的安装程序实例—艾泽拉斯之海洋女神出品(五) --补遗 (已补充第三部分完整版)
  18. IntelliJ IDEA2022.1 正式发布, 更快,更强
  19. AI TIME 3 周年 | 三生万物,生生不息(文末有惊喜!)
  20. SS00004.flink——|HadoopFlink计算领域锋利的武器.v04|——|Flink.v01|StandAlone模式部署|

热门文章

  1. 旋转图像Python解法
  2. mysql500万数据查询速度_是什么影响了数据库查询速度
  3. java的回文是什么_Java实现回文判断
  4. 计算机考研各个学校科目,计算机考研学校的前几个排名
  5. 居然还有大学在大一上C语言课?
  6. 漫画科普:天线的原理?
  7. C语言、嵌入式位操作精华技巧大汇总
  8. java list 删除元素_Java面试题:List如何一边遍历,一边删除?
  9. java 成员变量的初始化_Java类变量和成员变量初始化过程
  10. java判断五张牌中有一对,同花大顺-扑克牌问题一副扑克牌中任意取出五张牌,那五 – 手机爱问...