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. 任意目录下启动tomcat

    DOS中启动tomcat 1.将tomcat的bin目录添加到Path变量中 2.添加catalina_home变量 3.命令行输入catalina run ojbk

  2. emWin 文字图形同时刷新导致图形显示异常

    @2018-7-10 实现目标 一 BUTTON 控制文字图形的刷新切换,具体为 BUTTON 初次按下,文字显示为 “开始” .填充圆显示为绿色,再次按下,文字显示为 “停止” .填充圆显示为红色 ...

  3. BloodHound官方使用指南

    0x00  概观 1.BloodHound介绍 BloodHound是一种单页的JavaScript的Web应用程序,构建在Linkurious上,用Electron编译,NEO4J数据库是Power ...

  4. ST表与树状数组

    ST表  st表可以解决区间最值的问题.可以做到O(nlogn)预处理 ,O(1)查询,但是不支持修改. st表的大概思路就是用st[i][j]来表示从i开始的2的j次方个树中的最值,查询时就从左端点 ...

  5. jnlp初次试用

    1.jnlp是什么?是java提供的一种让你可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个 java应 用程序.好处就不用说了,如果你的java应用程序 ...

  6. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

  7. java代码示例(4—1(作业))

    package com.java.union4; import static org.junit.Assert.*; import org.junit.Test; public class Demo ...

  8. url 编码和解码网址

    Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...

  9. UESTC - 1324 卿学姐与公主

    题目链接 某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏 在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中. 英勇的卿学姐拔出利刃冲向了拯救公主的道路. 走过了荒野,翻越了 ...

  10. xml总结(一 )

    一.了解 XML(eXtensive Markup Language)可扩展标记语言. XML是被用来传输和存储数据,焦点是内容,是对html的补充. HTML是将数据进行格式化显示.xml需要自定义 ...