// 头文件
#pragma once

// CTabView
class CTabView : public CCtrlView
...{
DECLARE_DYNCREATE(CTabView)
public:
CTabView();
virtual ~CTabView();
CTabCtrl& GetTabCtrl() const;
protected:
DECLARE_MESSAGE_MAP()
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
public:
virtual void OnInitialUpdate();
};
// 源文件
#include "stdafx.h"
#include "TabView.h"
// CTabView
IMPLEMENT_DYNCREATE(CTabView, CCtrlView)
CTabView::CTabView() :
CCtrlView(_T("SysTabControl32"), AFX_WS_DEFAULT_VIEW)
...{
}
CTabView::~CTabView()
...{
}

BEGIN_MESSAGE_MAP(CTabView, CCtrlView)
END_MESSAGE_MAP()

// CTabView message handlers
CTabCtrl& CTabView::GetTabCtrl() const
...{
return *(CTabCtrl*)this;
}
BOOL CTabView::PreCreateWindow(CREATESTRUCT& cs)
...{
// TODO: Add your specialized code here and/or call the base class
if(!CCtrlView::PreCreateWindow(cs))
return FALSE;
//cs.style |= TCS_FIXEDWIDTH;
return TRUE;
}
void CTabView::OnInitialUpdate()
...{
CCtrlView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
static CString sLable[] = ...{
_T("Tab No 1"),
_T("Tab No 2"),
_T("Tab No 3")
};
GetTabCtrl().SetItemSize(CSize(100, 0));
TC_ITEM item;
item.mask = TCIF_TEXT;
for(int i=0; i<3; i++)
...{
item.pszText = (LPSTR)(LPCTSTR)sLable[i];
item.cchTextMax = sLable[i].GetLength();
GetTabCtrl().InsertItem(i, &item);
}
}
本文介绍了一个名为CTabView的自定义控件的实现细节,该控件继承自CCtrlView并实现了基本的标签视图功能。文章展示了如何创建控件、设置样式以及初始化标签项。
1066

被折叠的 条评论
为什么被折叠?



