列表控件可以看作是功能增強的 ListBox,它提供了四種風格,而且可以同時顯示一列的多中屬性值。
MFC 中使用 CListCtrl 類來封裝列表控件的各種操作。
創建一個窗口:可通過調用 BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
dwStyle 中可以使用以下一些列表控件的專用風格:
l LVS_ICON ,LVS_SMALLICON ,LVS_LIST, LVS_REPORT 這四種風格決定控件的外觀,同時只可以選擇其中一種,分別對應:大圖標顯示,小圖標顯示,列表顯示,詳細報表顯示
l LVS_EDITLABELS 結點的顯示字符可以被編輯,對于報表風格來講可編輯的只為第一列。
l LVS_SHOWSELALWAYS 在失去焦點時也顯示當前選中的結點
l LVS_SINGLESEL 同時只能選中列表中一項
也可通過listcontrl對話框的 View 屬性->Report 設置
設置為Report屬性后,若要ListControl顯示為列表狀,則在Init函數中,添加:
ListView_SetExtendedListViewStyle(m_listctrl.m_hWnd, LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE|LVS_EX_FULLROWSELECT);
int InsertItem( int nItem, LPCTSTR lpszItem ); 插入行
nItem:指明插入位置
lpszItem:為顯示字符。
除 LVS_REPORT 風格外其他三種風格都只需要直接調用 InsertItem 就可以了,但如果使用報表風格就必須先設置列表控件中的列信息。
int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat , int nWidth, int nSubItem); 插入列
iCol:為列的位置,從零開始
lpszColumnHeading:為顯示的列名
nFormat:為顯示對齊方式
nWidth:為顯示寬度
nSubItem:為分配該列的列索引。
BOOL SetItemText( int nItem, int nSubItem, LPTSTR lpszText );設置每列的顯示字符
nItem:為行位置
nSubItem:為列位置
lpszText:為顯示字符
下面的代碼演示了如何設置多列并插入數據:
m_list.SetImageList(&m_listSmall,LVSIL_SMALL);//設置 ImageList
m_list.InsertColumn(0,"Col 1",LVCFMT_LEFT,300,0);//設置列
m_list.InsertColumn(1,"Col 2",LVCFMT_LEFT,300,1);
m_list.InsertColumn(2,"Col 3",LVCFMT_LEFT,300,2);
m_list.InsertItem(0,"Item 1_1");//插入行
m_list.SetItemText(0,1,"Item 1_2");//設置該行的不同列的顯示字符
m_list.SetItemText(0,2,"Item 1_3")