网站首页 > 技术文章 正文
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-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
- 2025-06-13 体验iOS 15之后,我记住了这8个小细节
- 2025-06-13 AI绘画EasyControl来了,宫崎骏「吉卜力」画风开源免费使用
- 2025-06-13 基于MATLAB的Malthus人口预测模型计算App
- 08-06中等生如何学好初二数学函数篇
- 08-06C#构造函数
- 08-06初中数学:一次函数学习要点和方法
- 08-06仓颉编程语言基础-数据类型—结构类型
- 08-06C++实现委托机制
- 08-06初中VS高中三角函数:从"固定镜头"到"360°全景",数学视野升级
- 08-06一文讲透PLC中Static和Temp变量的区别
- 08-06类三剑客:一招修改所有对象!类方法与静态方法的核心区别!
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)