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