多種類型的視圖集合CTabView
首先利用AppWizard建立工程,然後將視類的基類更改爲CTabView,並將所有的CView更改爲CTabView。
依次插入以CSrollView、CListView、CFormView、CEditView爲基類的CView1、CView2、CView3、CView4,並在程序中進行引用:
intCTabViewTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CTabView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add yourspecialized creation code here
AddView(RUNTIME_CLASS (CView1), _T("Scroll View"),100);
AddView(RUNTIME_CLASS (CView2), _T("List View"),101);
AddView(RUNTIME_CLASS (CView3), _T("Form View"),102);
AddView(RUNTIME_CLASS (CView4), _T("Edit View"),103);
return 0;
}
爲了增強各類的顯示效果,分別對加入的各個類型的視類進行程序設計。
在以CSrollView爲基類的CView1中,增加CSroll相關的控制,並在OnDraw中進行圖形的繪製。
在以CListView爲基類的CView2中,更改List的顯示風格
BOOL CView2::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Add your specialized code here and/or call thebase class
cs.style|= LVS_REPORT;
return CListView::PreCreateWindow(cs);
}
並在OnInitialUpdate()中加入列表的初始化代碼:
CListCtrl& wndList = GetListCtrl ();
wndList.SetExtendedStyle (LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES);
const int nColumns = 10;
int iColumn = 0;
// Insert columns:
for (iColumn = 0;iColumn < nColumns; iColumn++)
{
CStringstrColumn;
strColumn.Format(_T("Column %d"), iColumn + 1);
wndList.InsertColumn(iColumn, strColumn, LVCFMT_LEFT, 110);
}
// Insert items:
for (int i = 0; i < 10; i++)
{
const CString strItemFmt = _T("Item (%d, %d)");
CStringstrItem;
strItem.Format(strItemFmt, 1, i + 1);
int iItem = wndList.InsertItem (i, strItem, 0);
for (iColumn = 1; iColumn < nColumns; iColumn++)
{
strItem.Format(strItemFmt, iColumn + 1, i + 1);
wndList.SetItemText(iItem, iColumn, strItem);
}
}
在以CFormView爲基類的CView3中,加入相應的資源控件並進行程序設計,在以CEditView爲基類的CView4中,加入窗體文本初始化的代碼。
最終軟件界面: