VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2626|回复: 55

《实用VC编程之玩转控件》第14课:Tab标签控件

  [复制链接]
51_avatar_middle
online_admins 发表于 2018-11-14 23:54:13 | 显示全部楼层 |阅读模式
1、控件简介:
一个对话框界面的空间有限,如果需要放置很多控件的话恐怕摆不下而且也比较乱,这时候就可以使用 TabCtrl 标签页控件了。每个标签页下都可以作为一个单独的页面,对控件进行分组摆放。TabCtrl 控件也是其他很多软件经常用的一个控件。

2、控件类的封装:
正常来说Tab标签控件使用起来还是有点麻烦的,比如我们通过搜索几篇文章来看下:关键字:VC tab控件 使用
实际上TabCtrl标签页控件这东西就是用了一个障眼法,控件只是控件,只是进行切换用的,真正每个页面的东西是需要我们自己手动添加对话框资源来进行的。当点击标签页进行切换的时候,我们要用代码控制每个页面对话框的显示与隐藏。

大家看到了吧,又得创建子对话框,又得调整子对话框的坐标,每次切换标签的时候又得进行显示与隐藏,所以挺麻烦的。那么有什么简单的办法吗?答案就是封装啊!
这里我找到了好多年前我封装的一个Tab控件类,派生自 CTabCtrl,这几天我又针对已有代码优化了一下,拿出来与大家分享,这样封装完之后使用起来就简单很多了,接下来就教大家如何使用!

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
《实用VC编程之玩转控件》第14课:Tab标签控件

https://www.codeproject.com/Arti ... rsion-of-CTreePropS
《实用VC编程之玩转控件》第14课:Tab标签控件

https://www.codeproject.com/Arti ... -in-any-orientation
《实用VC编程之玩转控件》第14课:Tab标签控件

https://www.codeproject.com/Arti ... lookBar-in-Mode2003
《实用VC编程之玩转控件》第14课:Tab标签控件

https://www.codeproject.com/Arti ... l-Studio-NET-like-P
《实用VC编程之玩转控件》第14课:Tab标签控件

具体操作细节见视频教程的演示和讲解!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
教程在线观看地址:
https://www.bilibili.com/video/av38392055/?p=15
MP4高清视频下载地址:链接:https://pan.baidu.com/s/1pqLMAMIEg7NL2BYwRnqnDw 提取码:jo0u
本节课件下载(回复后可见):
游客,如果您要查看本帖隐藏内容请回复

备注:VIP会员可免费下载本站所有资源(点击查看)
提示:通过购买VC驿站U盘打包(点击查看)也可加入终身Vip会员^_^




上一篇:《实用VC编程之玩转控件》第13课:Progress进度条控件
下一篇:《实用VC编程之玩转控件》第15课:Tree树形控件
98_avatar_middle
在线会员 发表于 2018-11-15 09:10:59 | 显示全部楼层
谢谢 提供教程
95_avatar_middle
在线会员 发表于 2018-11-15 15:15:50 | 显示全部楼层
感谢老大分享
78_avatar_middle
在线会员 发表于 2018-11-15 16:45:11 | 显示全部楼层
感谢分享。666
72_avatar_middle
online_vip 发表于 2018-11-15 17:16:29 | 显示全部楼层
驿站出品,必是精品
69_avatar_middle
在线会员 发表于 2018-11-15 20:48:23 | 显示全部楼层
《实用VC编程之玩转控件》第14课:Tab标签控件谢谢楼主分享
41_avatar_middle
online_vip 发表于 2018-11-16 08:37:46 | 显示全部楼层
感谢楼主分享      
10_avatar_middle
在线会员 发表于 2018-11-16 10:06:57 | 显示全部楼层
感谢分享,V5
78_avatar_middle
online_vip 发表于 2018-11-16 13:50:47 | 显示全部楼层
感谢Syc大神分享
56_avatar_middle
在线会员 发表于 2018-11-16 21:22:07 | 显示全部楼层

谢谢 提供教程
63_avatar_middle
在线会员 发表于 2018-11-17 10:42:40 | 显示全部楼层
驿站出品,必是精品
98_avatar_middle
online_vip 发表于 2018-11-17 13:56:14 | 显示全部楼层
感谢老大分享
62_avatar_middle
online_vip 发表于 2018-11-17 18:17:07 | 显示全部楼层
第14课免费试看
25_avatar_middle
online_vip 发表于 2018-11-18 10:39:41 | 显示全部楼层
这个最常用的
57_avatar_middle
donate_vip 发表于 2018-11-18 20:47:00 | 显示全部楼层
感谢楼主的分享!@
22_avatar_middle
在线会员 发表于 2018-11-19 19:22:42 | 显示全部楼层
《实用VC编程之玩转控件》第14课:Tab标签控件《实用VC编程之玩转控件》第14课:Tab标签控件《实用VC编程之玩转控件》第14课:Tab标签控件
89_avatar_middle
在线会员 发表于 2018-11-21 21:25:09 | 显示全部楼层
不错                                    
87_avatar_middle
online_vip 发表于 2018-11-23 15:42:20 | 显示全部楼层

1、控件简介:
一个对话框界面的空间有限,如果需要放置很多控件的话恐怕摆不下而且也比较乱,这时候就可以使用 TabCtrl 标签页控件了。每个标签页下都可以作为一个单独的页面,对控件进行分组摆放。TabCtrl 控件也是其他很多软件经常用的一个控件。

2、控件类的封装:
正常来说Tab标签控件使用起来还是有点麻烦的,比如我们通过搜索几篇文章来看下:关键字:VC tab控件 使用
实际上TabCtrl标签页控件这东西就是用了一个障眼法,控件只是控件,只是进行切换用的,真正每个页面的东西是需要我们自己手动添加对话框资源来进行的。当点击标签页进行切换的时候,我们要用代码控制每个页面对话框的显示与隐藏。

大家看到了吧,又得创建子对话框,又得调整子对话框的坐标,每次切换标签的时候又得进行显示与隐藏,所以挺麻烦的。那么有什么简单的办法吗?答案就是封装啊!
这里我找到了好多年前我封装的一个Tab控件类,派生自 CTabCtrl,这几天我又针对已有代码优化了一下,拿出来与大家分享,这样封装完之后使用起来就简单很多了,接下来就教大家如何使用!
  TabSheet.h (848 Bytes, 下载次数: 4)   TabSheet.cpp (2.71 KB, 下载次数: 3)

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
  

具体操作细节见视频教程的演示和讲解!
13_avatar_middle
online_vip 发表于 2018-11-29 09:27:59 | 显示全部楼层
helloworld
02_avatar_middle
在线会员 发表于 2018-11-30 03:14:49 | 显示全部楼层
老大最伟大了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-7-17 15:24

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表