如何将复选框控件添加到 mfc 中的列表控件子项

Posted

技术标签:

【中文标题】如何将复选框控件添加到 mfc 中的列表控件子项【英文标题】:how to add checkbox control to the listcontrol subitems in mfc 【发布时间】:2014-06-05 11:23:51 【问题描述】:

我需要将复选框控件添加到列表控件子项中。首先我会告诉你我做了什么,最初我添加了一个报表样式的列表控件并将复选框样式添加到列表视图中,如下所示。

m_MfpListControl.SetExtendedStyle(LVS_EX_CHECKBOXES);

这一步代码是将复选框添加到第一列。但是,我想像这样随机地将复选框添加到子项中,

第 1 列 |第 2 列 |第 3 列 |第 4 列


[]项目1 | []子项1 | []子项2 | [] 子项3

[]-表示复选框

添加“Item1”并不是什么大不了的事,但添加到子项让我失望,而且我尝试了多种方式,比如在插入项目后,我将特定项目的状态设置为,

m_MfpListControl.SetItemState(0,INDEXTOSTATEIMAGEMASK(3),LVIS_STATEIMAGEMASK);

但这也不能正常工作,因为我可以添加和删除第一列的复选框,我尝试采用与设置项目状态相同的方法,就像我使用“SetItemState( )" API 以便将复选框控件添加到子项,不幸的是它在子项的情况下不起作用。

谁能告诉我正确的方法,这样我就可以在子项中添加复选框。

【问题讨论】:

你试过设置LVS_EX_SUBITEMIMAGES吗?您需要提供一个复选框图像。 自定义绘制或所有者绘制是获得子项复选框功能的唯一方法。 是的,我使用 LVS_EX_SUBITEMIMAGES 检查它只是将复选框图像添加到子项,但我想要的是我必须能够选择复选框并取消选中它。由于我是 mfc 的新手,请告诉我如何绘制这个所有者。如果可能的话,用一段代码详细说明我。 【参考方案1】:

我使用这个类在子项上添加复选框:

http://www.codeproject.com/Articles/8112/CQuickList

它需要 LVS_OWNERDATA。就我而言,这不是问题。

这个类还在子项上添加了复选框,但没有 LVS_OWNERDATA:

http://www.codeproject.com/Articles/29064/CGridListCtrlEx-Grid-Control-Based-on-CListCtrl

维尼修斯

【讨论】:

除此之外我们没有任何解决方案。我查看了您提供的链接,但它是如此巨大。我尝试调试该应用程序并尝试设置复选框,但每种方法都有一些链接与另一个,它像任何东西一样增长。你能告诉我任何其他方式来添加一段只能生成复选框的代码到我的项目中的子项:)

以上是关于如何将复选框控件添加到 mfc 中的列表控件子项的主要内容,如果未能解决你的问题,请参考以下文章

列表控件中的 MFC 对话框组合框

猎豹MFC--列表控件ListControl

MFC 中检查列表框控件中禁用复选框的工具提示

mfc如何用txt保存下拉框控件的内容?下拉框如何读入TXT中的内容到属性-数据中?

怎么读取列表控件中的数据

MFC中的列表控件,当选择了多项时,如何对选中的数据进行操作?