现在的位置: 首页 > 综合 > 正文

CListctrl 获取指定列表的图标序号

2017年11月07日 ⁄ 综合 ⁄ 共 1008字 ⁄ 字号 评论关闭

       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

抱歉!评论已关闭.