注意,本随笔是根据书籍 《精通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. 运行程序,效果如下:

 

posted on 2017-10-29 21:29  C码农  阅读(327)  评论(0编辑  收藏  举报