MFC列表控件如何做成这种风格?就是需要每一项前面都要有一个打钩的,然后最关键的是我想要复选了这么多项

以后,点击一个选定,可以把它们这些项目的名字全部记录在数据库中。我现在的问题就是该怎么获取选中项目的名字?... 以后,点击一个选定,可以把它们这些项目的名字全部记录在数据库中。我现在的问题就是该怎么获取选中项目的名字? 展开
 我来答
lengyu9010
2013-02-14 · TA获得超过218个赞
知道小有建树答主
回答量:226
采纳率:100%
帮助的人:160万
展开全部

这里用一个list控件,然后选择list或report风格,添加CListCtrl类型的变量m_list,再添加7个BOOL类型的变量用来实现7个项的复选框。初始化时像下面这个例程即可(此例程采用了report风格,如图所示):


//设置用户列表框

m_sColumnLable[0] = "曲线";

m_sColumnLable[1] = "颜色";

m_sItemString[0][0] = "转速";

m_sItemString[0][1] = "红色";

m_sItemString[1][0] = "温度";

m_sItemString[1][1] = "青色";

m_sItemString[2][0] = "压强";

m_sItemString[2][1] = "绿色";

m_sItemString[3][0] = "力矩";

m_sItemString[3][1] = "蓝色";

m_sItemString[4][0] = "系数";

m_sItemString[4][1] = "紫色";

//设置列表框各列

LV_COLUMN lvColumn;

lvColumn.mask = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;

for (int i=0;i<2;i++)

{

//设置新增列数据结构

lvColumn.iSubItem = i;

lvColumn.pszText = m_sColumnLable[i].GetBuffer(99);

lvColumn.cx = 125;

lvColumn.fmt = LVCFMT_LEFT;

//插入新增列

m_list.InsertColumn(i, &lvColumn);

}

//设置列表框各项

LV_ITEM lvItem;

for (i=0;i<5;i++)

{

//设置新增项数据结构

lvItem.mask = LVIF_TEXT | LVIF_STATE;

lvItem.iItem = i;

lvItem.iSubItem = 0;

lvItem.state = INDEXTOSTATEIMAGEMASK(1);

lvItem.pszText = m_sItemString[i][0].GetBuffer(99);

//插入新增项

m_list.InsertItem(&lvItem);

}

//设置每项的显示文本

for (i=0;i<5;i++)

for (int j=1;j<2;j++)

m_list.SetItemText(i, j, m_sItemString[i][j]);

ListView_SetExtendedListViewStyle(m_list, LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

for (i=0;i<5;i++)

ListView_SetCheckState(m_list, i, TRUE);


之后要想获取选中项的信息,可以在OnOK函数中写入:

m_bCheckRPM = ListView_GetCheckState(m_list, 0);

如果m_bCheckRPM值为true表示选中了,调取相应的m_sItemString值即可写入数据库,其他项完全一样

JANEWANGgreat
2013-02-14 · TA获得超过175个赞
知道小有建树答主
回答量:358
采纳率:0%
帮助的人:196万
展开全部
给复选框设定编号,绘制时保存名字,根据编号查找名称。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式