网站首页 > 技术文章 正文
Tab Control 控件
CTabCtrl是Tab Control控件类,可以将多个对话框集合到一个页面中,通过切换标签达到切换页面的效果,实现选项卡功能。
初始化选项卡
给tab控件绑定变量m_tab,通过InsertItem添加tab的标题,常用参数1表示tab下标序号,参数2为标题文字,参数3本样例未给出,为图标列表的序号,需要添加图标可以启用参数3。
m_tab.InsertItem(0, _T("Page1"));
m_tab.InsertItem(1, _T("Page2"));
m_tab.InsertItem(2, _T("Page3"));
m_tab.InsertItem(4, _T("Page4"));
m_tab.InsertItem(4, _T("Page5"));
m_tab.InsertItem(5, _T("Page6"));添加对话框资源
仅仅初始化如上6个tab标签,切换时界面并没有发生变化,还需要创建对应6个界面,即6个对话框。
对话框是一种资源,在资源视图-对话框-鼠标右键单击-插入,本样例只给出两个对话框,其余操作都是相同的。
每个对话框放置一个按钮或者其他类型控件作为区分:
此处注意属性设置,样式:Child,边框:None:
然后再给对应对话框添加类,会自动生成对应.h头文件和.cpp文件:
关联子对话框和m_tab:
m_dlg_page1.Create(IDD_DLG_PAGE1, &m_tab);
m_dlg_page2.Create(IDD_DLG_PAGE2, &m_tab);子控件区域比m_tab要小一些,先获取m_tab位置,在其基础上缩小,然后放置子控件。默认选择下标为0的tab和第一个对话框:
CRect rect;
m_tab.GetClientRect(rect);
rect.top += 30;
rect.left += 8;
rect.right -= 8;
rect.bottom -= 8;
m_dlg_page1.MoveWindow(rect);
m_dlg_page2.MoveWindow(rect);
m_tab.SetCurSel(0);
m_dlg_page1.ShowWindow(SW_SHOW);添加切换tab事件
void CDemoDlg::OnTcnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult)
{
switch (m_tab.GetCurSel())
{
case 0:
m_dlg_page1.ShowWindow(SW_SHOW);
m_dlg_page2.ShowWindow(SW_HIDE);
break;
case 1:
m_dlg_page1.ShowWindow(SW_HIDE);
m_dlg_page2.ShowWindow(SW_SHOW);
break;
default:
break;
}
*pResult = 0;
}
猜你喜欢
- 2025-09-04 HTML DOM Label 对象_html label标签属性
- 2025-09-04 详解|一文帮你区分Radio、Tabs 和 Segmented 组件的应用场景
- 2025-09-04 基于MATLAB的BP神经网络预测计算App
- 2025-06-13 1分钟,彻底弄懂浏览器缓存策略(浏览器缓存概念)
- 2025-06-13 Go 学习:从环境搭建到写一个 Web 服务
- 2025-06-13 苹果四大系统信息汇总(苹果系统包括哪些手机)
- 2025-06-13 90%企业都适用,搭建性能监控体系照抄就行
- 2025-06-13 Excel常用技能分享与探讨(5-宏与VBA简介 VBA之用户窗体-多页控件)
- 2025-06-13 电脑常用组合键大全:指尖上的效率革命
- 2025-06-13 基于MATLAB的BP神经网络预测计算App
- 最近发表
-
- 用Cursor开启JAVA+AI生涯_javascirpt怎么开启
- 大数据调度服务监控平台_大数据调度是什么意思
- SpringBoot、MyBatis、Vue搭建一个Java企业应用开源框架源码分享
- 大数据技术之Flume_大数据volume的含义
- Jenkins运维之路(Slave容器节点)_jenkins slave工作原理
- 程序员自救指南:IDEA 卡成狗?我的 9G 堆内存调参表让你起飞 附避坑
- JMeter:一个简单的测试计划怎么做?
- Windows 命令行终端 PowerShell 美化计划
- JDK25即将发布!新特性概览_jdk52.0
- JDK 25 新特性极简总结(2025 年 9 月 16 日发布,LTS 长期支持)
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
