列表控制和視(
List Control&View)主要用來以各種方式顯示一組數據記錄供用戶進行各種操作,Windows98/95中資源管理器中的“查看”標簽下的“大圖標|小圖標|列表|詳細資源”就是一個非常好的典型應用。列表中的記錄可以包括多個數據項,也可以包括表示數據內容的大小圖標,用來表示數據記錄的各種屬性。
列表控制提供了對Windows列表功能操作的基本方法,而使用列表視的視函數可以對列表視進行各種操作,通過調用視成員GetListCtrl獲取嵌在列表視內列表控制的引用(GetListCtrl& ctrlList = GetListCtrl()),就可以和列表控制一樣進行各種操作。操作一個列表控制和視的基本方法為:創建列表控制;創建列表控制所需要的圖像列表;向列表控制添加表列和表項;對列表進行各種控制,主要包括查找、排序、刪除、顯示方式、排列方式以及各種消息處理功能等;最后撤消列表控制。
對于一個列表控制,其最典型最常用的顯示控制方式為:大圖標方式(LVS_ICON)、小圖標方式(LVS_SMALLICON)、列表顯示方式(LVS_LIST)和詳細資料(即報告LVS_REPORT)顯示方式。這可以通過設置其顯示方式屬性來實現。要控制列表所在窗口的風格,可通過功能函數GetWindowLong和SetWindowLong來實現,要控制列表圖標的對齊方式,可通過設置列表窗口的風格LVS_ALIGNTOP或LVS_ALIGNLEFT來實現,
(二)列表控制的對象結構
1、列表控制的建立方法
CListCtrl&listCtrl 定義列表對象的結構
Create 建立列表控制并綁定對象
列表控制CListCtrl::Create的調用格式如下:
BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
其中參數dwStyle用來確定列表控制的風格;rect用來確定列表控制的大小和位置;pParentWnd用來確定列表控制的父窗口,通常是一個對話框;nID用來確定列表控制的標識。其中列表控制的風格可以是下列值的組合:
LVS_ALIGNLEFT 用來確定表項的大小圖標以左對齊方式顯示;
LVS_ALIGNTOP 用來確定表項的大小圖標以頂對齊方式顯示;
LVS_AUTOARRANGE 用來確定表項的大小圖標以自動排列方式顯示;
LVS_EDITLABELS 設置表項文本可以編輯,父窗口必須設有LVN_ENDLABELEDIT風格;
LVS_ICON 用來確定大圖標的顯示方式;
LVS_LIST 用來確定列表方式顯示;
LVS_NOCOLUMNHEADER 用來確定在詳細資料方式時不顯示列表頭;
LVS_NOLABELWRAP 用來確定以單行方式顯示圖標的文本項;
LVS_NOSCROLL 用來屏蔽滾動條;
LVS_NOSORTHEADER 用來確定列表頭不能用作按鈕功能;
LVS_OWNERDRAWFIXED 在詳細列表方式時允許自繪窗口;
LVS_REPORT 用來確定以詳細資料即報告方式顯示;
LVS_SHAREIMAGELISTS用來確定共享圖像列表方式;
LVS_SHOWSELALWAYS 用來確定一直顯示被選中表項方式;
LVS_SINGLESEL 用來確定在某一時刻只能有一項被選中;
LVS_SMALLICON 用來確定小圖標顯示方式;
LVS_SORTASCENDING 用來確定表項排序時是基于表項文本的升序方式;
LVS_SORTDESCENDING 用來確定表項排序時是基于表項文本的降序方式;
2、列表控制的屬性類
列表控制的屬性類包括取得列表控制的背景色GetBkColor、設置列表控制的背景色SetBkColor、取得列表控制的圖像列表GetImageList、設置列表控制的圖像列表SetImageList、取得列表項數目GetItemCount、取得列表控制的屬性GetItem、取得與表項相關的數據GetItemData、設置表項的屬性SetItem、設置與表項相關的數值SetItemData、取得相關聯的下一個表項GetNextItem、設置列表控制的文本顏色SetTextColor、取得列表控制的文本背景顏色GetTextBkColor、設置表項的最大數目SetItemCount和取得被選中表項的數目GetSelectedCount等。
3、列表控制的操作方法
列表控制的操作方法包括插入一個新的表項InsertItem、刪除一個表項DeleteItem、排序表項SortItems、測試列表的位置HitTest、重繪表項RedrawItems、插入一個表列InsertColumn、刪除一個表列DeleteColumn、編輯一個表項文本EditLabel和重繪一個表項DrawItem等。