禁用/隐藏CListCtrl MFC中的项目

时间:2013-11-11 07:25:24

标签: c++ mfc clistctrl

我想用SetItemState()隐藏或禁用Items。 CListCtrl位于报表视图中。 它必须是这样的m_List.SetItemState(1, DISABLE, DISABLE);

我搜索但没找到合适的nState

如果有另一个解决方案而不是SetItemState,它也可以

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

没有项目状态来表示禁用(灰色)项目。见docs 解决这个问题的唯一方法是您自己的实现和使用自定义绘制。这就是我这样做的方式。

您可以轻松阻止用户在捕获LVN_ITEMCHANGING时选择项目。只需过滤状态Change to LVIS_SELECTED并返回TRUE以防止更改。

答案 1 :(得分:0)

您可以提供视觉反馈。我会派出一个类CMFCListCtrl并覆盖OnGetCellBkColorOnGetCellTextColor方法来实现它。

在选择不可选择的项目时,我会覆盖其对选择的响应以取消选择。但是对于这部分,我不太确定它是否可行。