WTL: 从零建立自己的CMyTabCtrl(一)

对CTabView控件,有了相当了解之后,我做了一些改进。结果仅仅只是接近了预期,距离我预期的目标,还差了些。

完全不如左边的容器标题效果好。考虑再三,我决定放弃这种修补,完全从 0开始做一个TabView 控件,其实主要是 CTabCtrl控件,替换windows里面的那个。这个决定基于如下几个原因,也是我们新的控件预期实现的目标

       1. 这是一个通用的TAB控件,要可以用于对话框

       2. 它的颜色搭配可以调整

       3. 处于激活状态,颜色方案与非活动时候不同。

       4. 选项卡上可以有关闭按钮,选项卡的风格,要是google chrome 的风格

      5.  当打开的窗口也足够多的时候,通过压缩选项卡的宽度来容纳

         差不多就是这样,接下来,我们来看看技术上实现,TAB每次只显示一个窗口,所以类似容器的客户窗口。再加上一个维护窗口句柄的的数组就可以实现。TABView是一个窗体,里面包含另一个子窗体,CaptionBar, 用来实现选项卡标签, 另一个子窗体就是客户窗口。在没有选项卡的时候,我打算仍然会给出一个选项卡,只是与其他选项卡稍微不同,客户区域,可以指定显示一张图片。选项卡标签可以显示一个按钮和一个状态位图,

       这篇文章显然必须分成若干个部分来完成。我自己就很不喜欢过长的文章,所以我也不想这样做。每次一个主题,然后去完成,我喜欢这样去做事情。

      开发过程中,保持让你的控件始终能够工作,这是个很好的开发体验,不要等到全部写完代码再去测试。这是我的个人建议。

      所以本节我们要完成的任务就是,搭一个控件的模板类基础框架, 这个类是你开发其他0开始控件的起点。我已经有了这么一个框架, 粘贴,查找和替换之后,就是我们TAB控件的初始代码.

     头文件:  MySpecTabView.h

    

// MySpecTabView.h : interface of the CMySpecTabView class
//
/

#pragma once

template <class T, class TBase = ATL::CWindow, class TWinTraits = ATL::CControlWinTraits>
class ATL_NO_VTABLE CMySpecTabCtrlImpl: public CWindowImpl< T, TBase, TWinTrai
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值