zoukankan      html  css  js  c++  java
  • MFC中的列表控件CListCtrl

    在使用CListCtrl控件Report显示风格时,需要设置列标题信息,否则不能向控件中添加数据信息,编辑列标题需要
    使用InsertColumn方法:
        m_ListCtrl.InsertColumn(0, "姓名", LVCFMT_LEFT, 150, 0);
        m_ListCtrl.InsertColumn(1, "联系电话", LVCFMT_LEFT, 150, 1);

    函数功能:在报告模式下插入一列
    函数原型:int InsertColumn(int nCol, const LVCOLUMN* pColumn)
    int InsertColumn(int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LEFT, int nWidth = -1, int nSubItem = -1);
    参数: nCol表示要插入列的列号。
    pColumn 为新建列属性的LVCOLUMN结构的地址。
    对于第二种函数重载,参数lpszcolumnHeading 为列标题的字符串的地址,所以可以使用一个字符串,比如 "姓名"。
    nFormat 指定列对齐方式的整数,缺省值是左对齐。它可以为下列值之一:LVCFMT_LEFT,LVCFMT_RIGHT或LVCFMT_CENTER。
    nWidth 以像素为单位的列宽。缺省值为-1,表示没有设置列宽。
    nSubItem 与列相关联的子项的索引。缺省值为-1,表示没有子项与列相关。
    为CListCtrl控件添加行:
        在CListCtrl控件中添加信息时不能直接向控件中添加列信息,需要先为控件添加行,使用InsertItem方法:
        m_ListCtrl.InsertItem(0, "");

    函数原型:

    int InsertItem( const LVITEM* pItem );

    int InsertItem( int nItem, LPCTSTR lpszItem );

    int InsertItem( int nItem, LPCTSTR lpszItem, int nImage );

    int InsertItem( UINT nMask, int nItem, LPCTSTR lpszItem, UINT nState, UINT nStateMask, int nImage, LPARAM lParam );

    其中,nItem是控件中行的索引 、lpszItem是控件头的名字。

     一般我们用的比较多的是第二种和第三种,其中第三种是建立一个带有头标的项。
     用于MFC中CListCtrl控件加入列表项

    参数:

      第一个参数是节点名

     第二个参数是树节点未选中时使用的图标下标

     第三个参数是树节点选中时使用的图标下标,

    第四个参数是本节点的父节点,第二、三个参数都是针对树的图像列表而言的。CImageList* SetImageList( CImageList * pImageList, int nImageListType );给树插入图像列表.

    为CListCtrl控件添加数据:

     通过SetItemText方法可以为任意行的任意列添加数据:

     m_ListCtrl.SetItemText(0, 0, "Name");

     m_ListCtrl.SetItemText(0, 1, "123456");

    设置CListCtrl控件的扩展风格:
        使用SetExtendedStyle函数可以设置CListCtrl控件的扩展风格,如显示方式,画出网格线等:
        m_ListCtrl.SetExtendedStyle(
              LVS_EX_FLATSB    // 扁平风格滚动
            | LVS_EX_FULLROWSELECT    // 允许正航选中
            | LVS_EX_HEADERDRAGDROP    // 允许标题拖拽
            | LVS_EX_ONECLICKACTIVEATE    // 高亮显示
            | LVS_EX_GRIDLINES    // 画出网格线
            );
    
    单击CListCtrl控件列标题进行排序:
        在使用CListCtrl控件的Report显示风格时,要实现单击列标题进行排序需要在控件的LVN_COLUMNCLICK消息的处理函数中添加SortItem函数:
       
    // Sort the item in reverse alphabetical order.
    static int CALLBACK 
    MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
    {
       // lParamSort contains a pointer to the list view control.
       // The lParam of an item is just its index.
       CListCtrl* pListCtrl = (CListCtrl*) lParamSort;
       CString     strItem1 = pListCtrl->GetItemText(lParam1, 0);
       CString     strItem2 = pListCtrl->GetItemText(lParam2, 0);
    
       return strcmp(strItem2, strItem1);
    }
    
    void snip_CListCtrl_SortItems()
    {
       // The pointer to my list view control.
       extern CListCtrl* pmyListCtrl;
    
       // Sort the list view items using my callback procedure.
       pmyListCtrl->SortItems(MyCompareProc, (LPARAM) pmyListCtrl);
    }
  • 相关阅读:
    动手动脑之异常处理
    git一些概念
    jquery each函数使用
    数据库客户端
    plotly.js
    网站跳转汇总
    jquery 实现间隔运行
    学习 在线调试
    Robot限制字典的key大写的class
    Gerrit 相关
  • 原文地址:https://www.cnblogs.com/qianyaoyuan/p/2827282.html
Copyright © 2011-2022 走看看