使用列表控制的步驟如下:
所用到的兩種數(shù)據(jù)結(jié)構(gòu):
列:
LV_COLUMN STRUCT
imask dd ?
fmt dd ?
lx dd ?
pszText dd ?
cchTextMax dd ?
iSubItem dd ?
iImage dd ?
iOrder dd ?
LV_COLUMN ENDS
Field name | Meanings |
---|---|
imask | 一組標(biāo)志位標(biāo)明該結(jié)構(gòu)體中那些成員變量中的值有效。它的意義和上面我們提到的LV_COLUMN型結(jié)構(gòu)體中向?qū)?yīng)的成員變量基本相同。更詳細(xì)的信息,可以查詢WIN32 API 手冊。 |
iItem | 該結(jié)構(gòu)體代表的項(xiàng)目的索引號。索引號是從0開始編號的。該值和表單的“行”類似。 |
iSubItem | 和上一個(gè)成員變量指定的項(xiàng)目相連的子項(xiàng)目的索引號。您可以把它當(dāng)作表單的“列”。譬如您想要把一個(gè)項(xiàng)目插入到新創(chuàng)建的列表視圖控件,iItem的 值應(yīng)為0(因?yàn)樵擁?xiàng)目是第一個(gè)項(xiàng)目),iSubItem的值也應(yīng)當(dāng)為0(我們想把該項(xiàng)目插到第一列)。如果你想指定一個(gè)子項(xiàng)目和該項(xiàng)目相連,iItem中 應(yīng)該是您想要相連的項(xiàng)目的索引號,iSubItem的值應(yīng)當(dāng)是大于0的值,具體的值取決于您想把該子項(xiàng)目插在那一列。如果你的列表視圖控件一共有4列的 化,第一列包含了項(xiàng)目,其余3列是留給子項(xiàng)目的。如果您想把子項(xiàng)目插在第四列,應(yīng)當(dāng)指定該值為3。 |
state | 該成員變量包含的標(biāo)志位反應(yīng)了項(xiàng)目的狀態(tài)。狀態(tài)的改變可能是由用戶的操作引起的或是程序改變的。這些狀態(tài)包括:是否有焦點(diǎn)/高亮度顯示/被選中(由于被剪切)/被選中等。另外還包括,以1為基數(shù)的索引用來代表是否處使用重疊/狀態(tài)圖標(biāo)。 |
stateMask | 由于上面的成員變量包含狀態(tài)標(biāo)志位、重疊的位圖索引號、和狀態(tài)位圖的索引號,我們需要告訴WINDOWS我們到底需要設(shè)定或查詢那一個(gè)值。該成員變量就是用來做這項(xiàng)工作的。 |
pszText | 當(dāng)我們想設(shè)定項(xiàng)目的屬性時(shí),它包含項(xiàng)目名稱的ASCII碼的字符串的地址。當(dāng)查詢項(xiàng)目的屬性時(shí),該成員變量將用來接收查詢返回的項(xiàng)目的名稱。 |
cchTextMax | 僅當(dāng)您用來查詢項(xiàng)目的屬性時(shí)才需要使用該值,這時(shí)它包含上一個(gè)成員變量的大小。 |
iImage | 圖標(biāo)在列表視圖中的圖象鏈表中的索引號。 |
lParam | 用戶定義的值,當(dāng)您給項(xiàng)目排序時(shí)使用。當(dāng)您告訴列表視圖對項(xiàng)目排序時(shí),列表視圖將成對地比較項(xiàng)目。 它將會把兩個(gè)項(xiàng)目的lParam的值傳給您,這樣您就可以進(jìn)行比較先列出那一個(gè)了。如果您現(xiàn)在還不太明白的話,沒有系,我們稍后還要講關(guān)于排序的問題。 |