网站首页 > 技术文章 正文
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
- 06-13C++之类和对象(c++中类和对象的区别)
- 06-13C语言进阶教程:数据结构 - 哈希表的基本原理与实现
- 06-13C语言实现见缝插圆游戏!零基础代码思路+源码分享
- 06-13Windows 10下使用编译并使用openCV
- 06-13C语言进阶教程:栈和队列的实现与应用
- 06-13C语言这些常见标准文件该如何使用?很基础也很重要
- 06-13C语言 vs C++:谁才是编程界的“全能王者”?
- 06-13C语言无锁编程指南(c语言锁机代码)
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)