MFC使用指南

MFC学习



前言

本文记录工作中用到的MFC控件用法

一、常用控件

1.CLIstCtrl

接口说明
InsertColumn插入列
InsertItem插入行
SetItemText设置某行某列数据
GetItemText得到某行某列数据
DeleteAllItems清空所有行数据
SendMessage可以控制表格样式
GetNextItem得到选择行

CListCtrl可以当表格使用。
设置表格线:

CListCtrl list;
list.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

插入表头(列数据)

list.InsertColumn(0, _T("姓名"), LVCFMT_LEFT, 40);//第1列,左对齐,表格宽度40
list.InsertColumn(1, _T("性别"), LVCFMT_LEFT, 40);//第2列,左对齐,表格宽度40

//可以重新调整列宽
CRect rcGrid;
list.GetClientRect(&rcGrid);
int nWidth = rcGrid.Width();
list.SetColumnWidth(0, nWidth * 3 / 4);
list.SetColumnWidth(1, nWidth / 4);

插入行

list.InsertItem(0, _T("张三")); //第一行
list.SetItemText(0, 1, _T("男"));

获取选中行

int nRow = list.GetNextItem(-1, LVNI_SELECTED);

如果多选:

POSITION pos = ist.GetFirstSelectedItemPosition();
if (pos != NULL)
{
	while (pos)
	{
		int nItem = ist.GetNextSelectedItem(pos);
		...... //处理
	}
}

指定选中行:

list.SetItemState(index,LVNI_FOCUSED | LVIS_SELECTED, LVNI_FOCUSED | LVIS_SELECTED); //设置行index为选中并高亮(如果未设置Focuse,被选中行会变为灰色)

另外,要使被选中行高亮显示,除了将item 的 state 和 stateMask 都设置LVNI_FOCUSED之外,还要将List Control控件的Always show selection属性设置为TRUE(默认为FALSE,也就是说当前选择的 item 在控件非激活状态下是不显示选中行的)。 经过以上修改,在打开对话框之后,指定item在List Control控件中显示为选中状态,但是背景色是灰色,因为打开的对话框焦点不在List Control控件上,因此需要在对话框类的OnInitDialog()中加一句list.SetFocus(),同时将return TRUE改为return FALSE来指示窗口不按照Tab顺序来指定焦点。

设置只读:

??

二、常见问题


总结

持续更新…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值