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