1. 程式人生 > >精通Visual.Cpp實效編程280例

精通Visual.Cpp實效編程280例

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例