CListctrl獲取選中行的行序號和列序號,獲取指定行,或者指定列的內容,等等相關常用操作,都可以通過百度查找到,但是當我需要獲取指定行的圖標序號時,卻不是那麼容易。但是看完本篇內容,會發現其實也不難。
首先要了解一個結構體:LVITEM
typedef struct _LVITEM {
UINT mask; //說明LVITEM結構中哪些成員有效
int iItem; //項目的索引值(可以視爲行號)從0開始
int iSubItem; //子項的索引值(可以視爲列號)從0開始
UINT state; //子項的狀態
UINT stateMask; //狀態有效的屏蔽位
LPTSTR pszText; //主項或子項的名稱
int cchTextMax; //pszText所指向的緩衝區大小
int iImage; //關聯圖像列表中指定圖像的索引值
LPARAM lParam; //程序定義的32位參數
int iIndent; //表示圖像位置縮進的單位
} LVITEM, FAR *LPLVITEM;
明白這個結構體後,後面的容易多了,直接代碼:
LVITEM selItem1; LVITEM selItem2; ZeroMemory ( &selItem1, sizeof(LVITEM) ); ZeroMemory ( &selItem2, sizeof(LVITEM) ); selItem1.iItem = iItem1; selItem1.mask = LVIF_IMAGE | LVIF_STATE; selItem1.stateMask = LVIS_SELECTED; selItem2.iItem = iItem2; selItem2.mask = LVIF_IMAGE | LVIF_STATE; selItem2.stateMask = LVIS_SELECTED; list->GetItem(&selItem1); list->GetItem(&selItem2); int nImgIndex1=0,nImgIndex2=1; nImgIndex1 = selItem1.iImage; nImgIndex2 = selItem2.iImage;
通過代碼,相信應該可以明白其中的過程,其中需要說明的是,前提已經知道所需要列表的行序號,即iItem1和iItem2