TabCtrl使用

0x1 新建子页面

插入三个对话框,ID分别为:IDD_PAGE_FILE、IDD_PAGE_NETWORK、IDD_PAGE_PROCESS

工具箱-【属性】-【Style】设置为【child】,【Border】设置为【None】

1、绑定类

每个对话框绑定一个对话框类

控件ID 绑定类名 作用
IDD_PAGE_FILE CPAGEFile 文件页
IDD_PAGE_NETWORK CPAGENet 网络页
IDD_PAGE_PROCESS CPAGEProc 进程页

0x2 调用对话框的页面操作

1、绑定变量

添加一个Tab Control控件,并为其关联一个CTabCtrl类型的控件变量m_tabCtrl,ID为IDC_TAB_DEMO

在【MFC_05_TabCtrlDlg.h】文件里声明这三个类。

	//Tab
CPAGEFile m_FilePage; // 文件页
CPAGENet m_NetPage; // 网络页
CPAGEProc m_ProcPage; // 进程页 #define MAX_DLG_PAGE 5 // 默认值,被切换的对话框数量
CDialog *m_pDialog[MAX_DLG_PAGE]; // 多少个选项
int m_CurSelTab; // 当前选中的选项

2、在OnInitDialog()初始化

以下所有代码都需要在OnInitDialog()函数中进行写入

m_tabCtrl.InsertItem(0, _T("文件"));
m_tabCtrl.InsertItem(1, _T("网络"));
m_tabCtrl.InsertItem(2, _T("进程"));

调整大小代码:

m_tabCtrl.SetPadding(19);            // SetPadding设置选项卡之间间隔
m_tabCtrl.SetMinTabWidth(50); // SetMinTabWidth设置最小选项卡宽度
m_tabCtrl.SetItemSize(CSize(50,25)); // SetItemSize设置选项卡设置高度

非模态方式创建三个子对话框:

m_FilePage.Create(IDD_PAGE_FILE, &m_tabCtrl);
m_NetPage.Create(IDD_PAGE_NETWORK, &m_tabCtrl);
m_ProcPage.Create(IDD_PAGE_PROCESS, &m_tabCtrl);

设定在Tab内显示的范围

//设定在Tab内显示的范围
CRect rc;
m_tabCtrl.GetClientRect(rc);
rc.top += 25;
// rc.bottom -= 8;
// rc.left += 8;
// rc.right -= 8; m_FilePage.MoveWindow(&rc);
m_NetPage.MoveWindow(&rc);
m_ProcPage.MoveWindow(&rc);

设置显示

//把对话框对象指针保存起来
m_pDialog[0] = &m_FilePage;
m_pDialog[1] = &m_NetPage;
m_pDialog[2] = &m_ProcPage;
//显示初始页面
m_pDialog[0]->ShowWindow(SW_SHOW);
m_pDialog[1]->ShowWindow(SW_HIDE);
m_pDialog[2]->ShowWindow(SW_HIDE); //保存当前选择
m_CurSelTab = 0;

3、TCN_SELCHANGE消息处理函数

TabCtrl控件属性页-【控件事件】-【TCN_SELCHANGE】,然后就可以进行选项卡之间的切换了。


void CMFC05TabCtrlDlg::OnTcnSelchangeTabDemo(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
m_pDialog[m_CurSelTab]->ShowWindow(SW_HIDE); // 把当前的界面隐藏
m_CurSelTab = m_tabCtrl.GetCurSel(); // 获取选中的界面选项索引值
if (m_pDialog[m_CurSelTab])
{
m_pDialog[m_CurSelTab]->ShowWindow(SW_SHOW); // 只显示选中的界面选项
}
*pResult = 0;
}

TabCtrl使用的更多相关文章

  1. TabCtrl的基本用法

    MFC TabCtrl控件的使用方法及思路 1.建立基于Dialog的应用程序 2.添加TabCtrl控件,并关联变量 3.建立TabCtrl中存放的Dialog子对话框若干,并关联类 4.在Tabc ...

  2. CTabCtrl - 如何使用TabCtrl控件

    CTabCtrl - 如何使用TabCtrl控件 建立一个基于对话框的MFC应用程序TabCtrlTest Step 1:在资源视图中,新建对话框资源,资源ID:IDD_TabCtrlExample_ ...

  3. MFC TabCtrl 控件修改标签尺寸

    注意:无论那种方法,都要先设置Tab控件的Style属性为fixed width. 第一种方法 MFC,tabcontrol控件改变标签大小 - CSDN博客 https://blog.csdn.ne ...

  4. 分享两种实现Winform程序的多语言支持的解决方案

    因公司业务需要,需要将原有的ERP系统加上支持繁体语言,但不能改变原有的编码方式,即:普通程序员感受不到编码有什么不同.经过我与几个同事的多番沟通,确定了以下两种方案: 方案一:在窗体基类中每次加载并 ...

  5. 第五篇:在SOUI中使用XML布局属性指引(pos, offset, pos2type)

    窗口布局的概念 每一个UI都是由大量的界面元素构成的,在Windows编程,这些界面元素的最小单位通常称之为控件. 布局就是这些控件在主界面上的大小及相对位置. 传统的布局一般使用一个4个绝对坐标来定 ...

  6. 给Source Insight做个外挂系列之五--Insight “TabSiPlus”

    “TabSiPlus 外挂插件”主要有两部分组成,分别是“外挂插件加载器”和“插件动态库”.“插件动态库”完成Source Insight窗口的Hook,显示Tab标签栏,截获Source Insig ...

  7. 如何给开源的DUILib支持Accessibility

    最近的工作是给开源的DUILib支持Accessibility, 一些经验记录并分享下. 微软的Accessibility其实Windows平台上一个挺重要的东西, 尽管在国内不受重视,但是如果你的软 ...

  8. WIN 下的超动态菜单(二)用法

    WIN 下的超动态菜单(一)简介 WIN 下的超动态菜单(二)用法 WIN 下的超动态菜单(三)代码 作者:黄山松,发表于博客园:http://www.cnblogs.com/tomview/     ...

  9. 第十一篇:SOUI系统资源管理

    SOUI资源管理模块 从前篇已经讲到在SOUI中所有资源文件通过一个uires.idx文件进行索引. 这里将介绍在程序中如何引用这些资源文件. 在SOUI系统中,资源文件通过一个统一的接口对象读取: ...

随机推荐

  1. 自学工业控制网络之路1.6-典型的现场总线介绍Interbus

    返回 自学工业控制网络之路 自学工业控制网络之路1.6-典型的现场总线介绍Interbus 1987年正式公布,其主要技术开发者为德国的PhoenixContact公司.1996年,INTERBUS成 ...

  2. 安装 Minio服务

    #MINIO SERVER Minio是在Apache License v2.0下发布的对象存储服务器.它与Amazon S3云存储服务兼容. 它最适合存储非结构化数据,如照片,视频,日志文件,备份和 ...

  3. 在kubernetes集群上用helm安装Datadog(Monitoring)

    Datadog is a monitoring service that gathers monitoring data from your containers within your Azure ...

  4. eclipse index 不工作 F3 不能找到头文件

    To add paths containing code to parse, follow these steps :1. Right click on the project2. Select Pr ...

  5. java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 不能使用 '(未知的)';文件已在使用中

    最近查看程序输入的日志时发现一个java连接Access的程序时不时的抛出: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driv ...

  6. oracle 按 123456789 排序 而不是 1 10 11 2 这种

    order by  decode(trim(translate(cptm,'0123456789',' ')),null,to_number(cptm))

  7. 信号处理——EMD、VMD的一点小思考

    作者:桂. 时间:2017-03-06  20:57:22 链接:http://www.cnblogs.com/xingshansi/p/6511916.html 前言 本文为Hilbert变换一篇的 ...

  8. mongodb的备份和还原

    1.首先把mongodb的bin加入环境变量 2.备份 我们使用mongodb内置的mongodump mongodump -h dbhost -d dbname -o dbdirectory 例如: ...

  9. GoLang基础数据类型--->字典(map)详解

    GoLang基础数据类型--->字典(map)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   可能大家刚刚接触Golang的小伙伴都会跟我一样,这个map是干嘛的,是 ...

  10. linux配置无秘钥登陆

    linux配置无秘钥登陆 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近有点心烦,很少写博客了,后期的3个月里,估计更新的频率也不会太高,请见谅,今天给大家共享一下linux不 ...