废话不说了,先看看效果图(目前的代码虽然可用,但并不是完整的,也没有经过详细的测试,有兴趣者可以以此为起点建立自己的TAB控件):
编写自己的 CMyTabCtrl 最先需要解决的问题是客户窗口,也就是当前TAB指定的那个窗口。我们在可以参照容器类里面的代码来写自己的段代码。本文最后,
下面这段代码对应了,TAB的所有窗口和当前窗口的成员变量:
struct _PAGESTRUCT
{
_PAGESTRUCT()
{
memset( this, 0, sizeof(_PAGESTRUCT));
}
HWND hWnd;
TCHAR captionText[64]; // 标签文字
int capTextLen; // 文字长度
POINT capPoint; // 标签位置
SIZE capSize; // 标签大小
// SIZE trueSize; // 实际显示的大小
int iImage;
LPVOID m_pData;
};
ATL::CSimpleArray<_PAGESTRUCT*> m_pageArray;
ATL::CWindow m_wndClient;
最开始的时候,我是打算标题栏另外建立一个窗口的,实际编程的过程中,不这样做可能更好。