本文转载自:VC驿站
https://www.cctry.com/thread-297460-1-1.html
1、控件简介:
一个对话框界面的空间有限,如果需要放置很多控件的话恐怕摆不下而且也比较乱,这时候就可以使用 TabCtrl 标签页控件了。每个标签页下都可以作为一个单独的页面,对控件进行分组摆放。TabCtrl 控件也是其他很多软件经常用的一个控件。
2、控件类的封装:
正常来说Tab标签控件使用起来还是有点麻烦的,比如我们通过搜索几篇文章来看下:关键字:VC tab控件 使用
实际上TabCtrl标签页控件这东西就是用了一个障眼法,控件只是控件,只是进行切换用的,真正每个页面的东西是需要我们自己手动添加对话框资源来进行的。当点击标签页进行切换的时候,我们要用代码控制每个页面对话框的显示与隐藏。
大家看到了吧,又得创建子对话框,又得调整子对话框的坐标,每次切换标签的时候又得进行显示与隐藏,所以挺麻烦的。那么有什么简单的办法吗?答案就是封装啊!
这里我找到了好多年前我封装的一个Tab控件类,派生自 CTabCtrl,这几天我又针对已有代码优化了一下,拿出来与大家分享,这样封装完之后使用起来就简单很多了,接下来就教大家如何使用!
TabSheet.h (848 Bytes, 下载次数: 6) TabSheet.cpp (2.71 KB, 下载次数: 5)
3、控件的使用:
a、将 TabSheet.h 和 TabSheet.cpp 这两个文件放到 MFCTest 工程目录下,并导入到vs工程中;
b、拖拽Tab控件到对话框模版上;
c、为Tab控件绑定一个 CTabCtrl 控件类型变量m_Tab;
d、对话框类头文件中的 CTabCtrl m_Tab; 声明更改为:CTabSheet m_Tab; 即更改控件变量的类型,如果编译不通过,需要包含 TabSheet.h;
e、添加一个对话框资源作为第一子页,并绑定派生自 CDialog 的子对话框类:CPage1;
f、修改 CPage1 的对话框资源属性:Border:None,Style:Child
g、在主对话框类声明中加入第一子页的实例化对象:CPage1 m_page_1;
h、在主对话框的初始化函数中加入加载子页的代码:
m_Tab.AddPage(_T("第一页"), &m_page_1, IDD_DIALOG1);
m_Tab.Show();
i、添加第二个子页,以此类推!
怎么样,用起来方便不少吧?我是平时自己写点什么小软件之类的,要是用到TabCtrl了就用这个自己封装好的!
4、开源控件类:
https://www.codeproject.com/Arti ... ols-Borders-and-All
https://www.codeproject.com/Arti ... rsion-of-CTreePropS
https://www.codeproject.com/Arti ... -in-any-orientation
https://www.codeproject.com/Arti ... lookBar-in-Mode2003
https://www.codeproject.com/Arti ... l-Studio-NET-like-P
具体操作细节见视频教程的演示和讲解!
第14课免费试看,下载地址: