您当前的位置: 首页 > 

令狐掌门

暂无认证

  • 2浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

令狐掌门 发布时间:2019-09-11 17:58:57 ,浏览量:2

           拖一个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.

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0433s