MFC列表控件List Control控件的使用方法

           拖一个List Control到对话框, 添加变量m_list , 设置表格属性View为 Report

        初始化表格

           设置列框,文本背景颜色,列名,列的布局样式等。

CRect rectL;
m_List.GetWindowRect(&rectL);
int widL = rectL.right - rectL.left;
int nColL = widL / 4;  //列宽

m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);  // 整行选择、网格线
m_List.SetTextBkColor(RGB(224, 238, 238));  //设置文本颜色

m_List.InsertColumn(0, _T("学号"), LVCFMT_LEFT, nColL);
m_List.InsertColumn(1, _T("姓名"), LVCFMT_LEFT, nColL);
m_List.InsertColumn(2, _T("专业"), LVCFMT_LEFT, nColL);
m_List.InsertColumn(3, _T("成绩"), LVCFMT_LEFT, nColL);

       给表格插入数据

       (1)先插入行,InsertItem(), 注意,第一个参数是行号,第二个可以为空字符串,或者设为第0列的名称。

CString id[] = { "2019001","2019002","2019003","2019004","2019005","2019006" };
CString name[] = { "鲁班", "后裔", "猴子", "亚瑟", "安其拉", "甄姬" };
CString zhuanye[] = { "射手", "射手", "刺客", "战士", "法师", "法师" };
CString score[] = { "100", "98", "100","90", "92", "91" };

for (int i = 0; i < 6; i++)
{
    // 1. 先插入一行,i是行号,第二个参数是第0列的内容;可以不填为空
    //m_List.InsertItem(i, id[i]);
    m_List.InsertItem(i, "");

    // 2.设置该行每一列的内容
    m_List.SetItemText(i, 0, id[i]);
    m_List.SetItemText(i, 1, name[i]);
    m_List.SetItemText(i, 2, zhuanye[i]);
    m_List.SetItemText(i, 3, score[i]);
}

        效果如下:

        动态插入也可以,添加定时器消息,比如,先插入前3列,最后一列分数,动态插入。

        此时不需要先插入行,因为之前几列已经插入好了,最后一列不需要再用InsertItem().

void CListControlDemoDlg::OnTimer(UINT_PTR nIDEvent)
{
	CString score[] = { "100", "98", "100","90", "92", "91" };

	static int add = 1;

	for (int i = 0; i < 6; i++)
	{
		CString str;
		str.Format("-%d", add);
		m_List.SetItemText(i, 3, score[i] + str);
	}
	
	add++;

	CDialog::OnTimer(nIDEvent);
}

        List Control的作用很多,比如还可以在第0列添加checkbox,  做一个全选,反选的功能。

        MFC控件的比较难用,如果不是特殊需要,最好还是用Qt, MFC的API太难用了,Qt相对简单,而且做得界面也漂亮,qss语法很好修改样式,做出各种效果。

        List Control有一个很坑的地方,如果你把 Owner Draw Fixed属性设为True, 又忘记写重载类,那么会有DrawItem()的bug.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

令狐掌门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值