在使用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); }