VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 669|回复: 21

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

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

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

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




上一篇:《实用VC编程之玩转控件》第13课:Progress进度条控件
下一篇:《实用VC编程之玩转控件》第15课:Tree树形控件

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

98_avatar_middle
在线会员 tomok 发表于 2018-11-15 09:10:59 | 显示全部楼层
谢谢 提供教程

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

95_avatar_middle
在线会员 zjh2008 发表于 2018-11-15 15:15:50 | 显示全部楼层
感谢老大分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

78_avatar_middle
在线会员 csa 发表于 2018-11-15 16:45:11 | 显示全部楼层
感谢分享。666

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

72_avatar_middle
online_vip qq9893146 发表于 2018-11-15 17:16:29 | 显示全部楼层
驿站出品,必是精品

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

69_avatar_middle
在线会员 windowswan 发表于 2018-11-15 20:48:23 | 显示全部楼层
《实用VC编程之玩转控件》第14课:Tab标签控件谢谢楼主分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

41_avatar_middle
online_vip liguolong 发表于 2018-11-16 08:37:46 | 显示全部楼层
感谢楼主分享      

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

10_avatar_middle
online_vip08 小菜一碟 发表于 2018-11-16 10:06:57 | 显示全部楼层
感谢分享,V5

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

78_avatar_middle
online_vip good20good 发表于 2018-11-16 13:50:47 | 显示全部楼层
感谢Syc大神分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

56_avatar_middle
在线会员 coffeemlx 发表于 2018-11-16 21:22:07 | 显示全部楼层

谢谢 提供教程

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

63_avatar_middle
在线会员 applekiss 发表于 2018-11-17 10:42:40 | 显示全部楼层
驿站出品,必是精品

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

98_avatar_middle
online_vip 海神号 发表于 2018-11-17 13:56:14 | 显示全部楼层
感谢老大分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

62_avatar_middle
online_vip cc_killer 发表于 2018-11-17 18:17:07 | 显示全部楼层
第14课免费试看

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

25_avatar_middle
online_vip ymgsk123 发表于 2018-11-18 10:39:41 | 显示全部楼层
这个最常用的

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

57_avatar_middle
在线会员 丿丶晴天灬 发表于 2018-11-18 20:47:00 | 显示全部楼层
感谢楼主的分享!@

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

22_avatar_middle
在线会员 fashion530 发表于 2018-11-19 19:22:42 | 显示全部楼层
《实用VC编程之玩转控件》第14课:Tab标签控件《实用VC编程之玩转控件》第14课:Tab标签控件《实用VC编程之玩转控件》第14课:Tab标签控件

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

89_avatar_middle
在线会员 liuxh626 发表于 2018-11-21 21:25:09 | 显示全部楼层
不错                                    

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

87_avatar_middle
online_vip shenchunlong 发表于 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 明天你好123 发表于 2018-11-29 09:27:59 | 显示全部楼层
helloworld

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

02_avatar_middle
在线会员 Dvol 发表于 2018-11-30 03:14:49 | 显示全部楼层
老大最伟大了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

GMT+8, 2018-12-14 00:56

Powered by Discuz! X3.4

© 2009-2018 cctry.com

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