WTL: 从零建立自己的CMyTabCtrl(二)
来源:互联网 发布:零起点学通c语言 编辑:程序博客网 时间:2024/05/18 02:01
废话不说了,先看看效果图(目前的代码虽然可用,但并不是完整的,也没有经过详细的测试,有兴趣者可以以此为起点建立自己的TAB控件):
编写自己的 CMyTabCtrl 最先需要解决的问题是客户窗口,也就是当前TAB指定的那个窗口。我们在可以参照容器类里面的代码来写自己的段代码。本文最后,
下面这段代码对应了,TAB的所有窗口和当前窗口的成员变量:
struct _PAGESTRUCT{_PAGESTRUCT(){memset( this, 0, sizeof(_PAGESTRUCT));}HWND hWnd;TCHARcaptionText[64];// 标签文字intcapTextLen;// 文字长度POINTcapPoint;// 标签位置SIZEcapSize;// 标签大小//SIZEtrueSize;// 实际显示的大小intiImage;LPVOID m_pData;};ATL::CSimpleArray<_PAGESTRUCT*> m_pageArray;ATL::CWindow m_wndClient;
最开始的时候,我是打算标题栏另外建立一个窗口的,实际编程的过程中,不这样做可能更好。因此这个窗口的很大一部分区域是被客户窗口占据的,我当时考虑可能需要使用DoubleBuffer,不然可能在绘制标题的时候会有闪烁。如果使用DoubleBuffer,那么新建一个标题窗口就是必须的了,否则连客户区域也要double那会浪费很多内存,由于图片太大,对应能也有不好的影响。编程的时候,暂时先不建立标题窗口,观察DoubleBuffer的必要性,实际测试下来,刷新区域处理的好的话,并没有闪烁问题。
另外我也为这个控件增加了tooltip,userdata等功能,很多功能未经测试。我已经将测试这个控件的整个工程的源代码作为资源上传,有兴趣的可以从下面的连接下载:
由于源代码已经写出来了,有点不知道从哪里解释了,有兴趣的自己看吧。
下载测试工程: WTLTABCTRL.Zip
0 0
- WTL: 从零建立自己的CMyTabCtrl(二)
- WTL: 从零建立自己的CMyTabCtrl(一)
- 建立自己的封装库(二)
- Android从零起步----(二)Intent的三种传值方式
- 从今天开始建立自己的博客
- UBOOT-2010.06 移植 建立自己的demo板 (二)
- Composer笔记(二):建立自己的PHP类库
- 从零冲击Erlang(二)
- android从零学(二)
- Python3从零学习(二)
- GitHub从零认知(二)
- 从零搭建LNMP环境(二)
- 从“零”开始搭网站(二)
- 自己实现WTL的CWindowWnd
- 写给从零单排PAT前的自己
- 写给新接触linq的同学(二)lamda从零来理解
- 【零起步开发Cocos2dx-3.x-王牌飞行员(二)】从程序的层次结构说起
- 从零学Android(二)、创建一个简单的用户界面
- 通过属性添加Action
- NumPy使用手记 (1)
- 西媒批中国自私侵略成性?中国维和部队比美都多
- 数据结构:算法之二叉树各种遍历(申明:转自落日小屋)
- 关于vim化浏览器
- WTL: 从零建立自己的CMyTabCtrl(二)
- 解决处理innode满了的办法
- ArcGIS.Server.9.3和ArcGIS API for JavaScript实现语句查询QueryTask(八)
- SharePoint 2013/2010 在一个列表或文档库内移动列表项,文档和文件夹位置而保持last modify by 等系统字段保持不变
- 打电话、发短信、发邮件常用代码
- define中的#与##
- Spring
- 什么是全栈开发者
- iOS6 在应用内展示App Store