精通Visual.Cpp實效編程280例
阿新 • • 發佈:2017-10-30
clas void treectrl ini col span 根據 icon 表視圖
註意,本隨筆是根據書籍 《精通Visual.Cpp實效編程280例》而來,親尊重原作者版權,如果需要參考書籍的代碼,請註意標註代碼出處
Chapter 5
MFC 層次結構圖:
5.19 Example 88 -- 列表視圖的使用
MFC的CListView類實現了列表視圖,調用CListView::GetListCtrl函數可以獲得列表視圖控件的引用。
GetListCtrl函數的定義:
CListCtrl& GetListCtrl( ) const;
編程步驟:
1. 建立一個多文檔視圖的應用程序,名稱Example88,在建立向導中註意選擇視圖類的基類為CListView
2. 在CExample88View類中添加成員函數,代碼如下:
void CExample88View::InitList() { //獲得列表視圖控件 CListCtrl *pList = &GetListCtrl(); //設置列表控件的顯示格式 pList->ModifyStyle(LVS_ICON | LVS_SMALLICON | LVS_LIST, LVS_REPORT); pList->SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); //在列表視圖中插入列for (int n=0; n<4; n++) { CString strColumeHeading = _T(""); strColumeHeading.Format(_T("Cloume %d"), n); pList->InsertColumn(n, strColumeHeading, 100, 100); } //在列表視圖中插入行 for (int m=0; m<10; m++) { CString strItem = _T(""); strItem.Format(_T("Item %d"), m); pList->InsertItem(m, strItem); for (int n=0; n<4; n++) { CString strText = _T(""); strText.Format(_T("SubItem %d %d"), m, n); pList->SetItemText(m, n, strText); } } }
3. 在CExample88View類的OnInitialUpdate函數中添加初始化列表視圖代碼:
void CExample88View::OnInitialUpdate() { CListView::OnInitialUpdate(); // TODO: 調用 GetListCtrl() 直接訪問 ListView 的列表控件, // 從而可以用項填充 ListView。 InitList(); }
4. 運行程序,效果如下:
5.20 Example89 -- 樹形視圖的使用
MFC的CTreeView類提供了樹視圖。調用CTreeView::GetTreeCtrl函數可以獲得樹控件的引用
編程步驟:
1. 建立一個多文檔視圖的應用程序,名稱為Example89,在建立向導中註意選擇視圖類的基類為CTreeView
2. 在CExampole89View類中添加成員函數,代碼如下:
void CExample89View::InitTree()
{
//獲得樹形控件
CTreeCtrl *pTree = &GetTreeCtrl();
//給樹形控件添加連線和按鈕
pTree->ModifyStyle(0, TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS);
CString strText = _T("");
//在樹中插入項
HTREEITEM hRoot = pTree->InsertItem(_T("Root"));
for (int i=0; i<4; i++)
{
strText.Format(_T("Item %d"), i);
//在樹中插入項
HTREEITEM hParent = pTree->InsertItem(strText, hRoot);
for (int j=0; j<5; j++)
{
strText.Format(_T("SubItem %d %d"), i, j);
pTree->InsertItem(strText, hParent);
}
//展開樹
pTree->Expand(hParent, TVE_EXPAND);
}
//展開樹項
pTree->Expand(hRoot, TVE_EXPAND);
//選擇樹項
pTree->Select(hRoot, TVGN_CARET);
}
3. 在CExample88View類的OnInitialUpdate函數中添加初始化列表視圖代碼:
void CExample89View::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
//初始化樹控件
InitTree();
}
4. 運行程序,效果如下:
精通Visual.Cpp實效編程280例