通用控件ListBox 消息控制

3 篇文章 0 订阅

通用控件ListBox 消息控制

MFC/面向对话框 :
回归本质 – “消息控制” – 好好学习了一下怎样通过消息控制通用控件ListBox

一.listbox添加列

用到结构体:LVCOLUMN column

一般在头文件<tlhelp32.h>有定义

typedef struct _LVCOLUMN {  
		UINT mask;               //说明此结构中哪些成员是有效的  
		int fmt;                 //列的对齐方式  
		int cx;                  //列的初始宽度  
		LPTSTR pszText;          //列的标题  
		int cchTextMax;          //pszText所指向的缓冲区的大小  
		int iSubItem;            //与列关联的子项的索引值,从0开始  
		int iImage;              //与列关联的图像列表中指定图像的索引值  
		int iOrder;              //第几列,0代表最左一列  
} LVCOLUMN, FAR *LPLVCOLUMN;  

使用方法是:

	LVCOLUMN column;
	column.mask = LVCF_TEXT | LVCF_FMT | LVCF_WIDTH; //设置有效域的属性
	column.fmt = LVCFMT_CENTER; //此栏的显示方式 --居中/靠左/靠右
	column.cx = 100; //这栏的宽度
	column.pszText = L"第一列"; //此栏(此列)的显示文本 比如:课程表 "星期一"

	//添加一栏 --用于显示程序名称
	::SendMessage(hWndList, LVM_INSERTCOLUMN, 0, (LPARAM)&column); //发消息通知listbox添加

	//添加一栏 --用于显示进程ID(PID)
	column.pszText = L"第二列"; //此栏(此列)的显示文本 比如:课程表 "星期二"
	column.cx = 50;
	::SendMessage(hWndList, LVM_INSERTCOLUMN, 0, (LPARAM)&column); //发消息通知listbox添加

一.listbox添加项

一般在头文件<tlhelp32.h>有定义

	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;

使用方法:

	int nItem = 0; //需要连续添加所以设的一个index
	CSTring cs = L"第一个内容" //
	LVITEM item = { 0 };
	item.iItem = nItem;
	item.mask = LVIF_TEXT;
	item.pszText = cs.GetBuffer(); //设置第一行名称 第一个内容 比如:课程表的"第一节课"
	
	 //注意LVM_INSERTITEM 是添加项(添加一行)
	::SendMessage(hWndList, LVM_INSERTITEM, 0, (long)&item);
	
	LVITEM lvi;
	lvi.iSubItem = 1; //这里是指定地第一行的第一个
	lvi.pszText = (LPTSTR)L"第二个内容"; //这将是第一行的第二个内容 比如:课程表的"语文"
	
	//注意LVM_SETITEMTEXT是添加(第nitem行)内容
	::SendMessage(hWndList, LVM_SETITEMTEXT, nItem,(LPARAM)&lvi);

注意看注释应该能很清楚了,走了一些坑,希望以后不会在犯糊涂了!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值