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);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM