我希望使用SetItemState()来隐藏或禁用某些项目。CListCtrl处于报表视图中。
大概像这样:m_List.SetItemState(1, DISABLE, DISABLE);
我搜索了一下,但没有找到正确的nState。
如果有比SetItemState更好的解决方案也可以。
有人能帮我吗?
没有任何状态可以表示禁用(灰色)项目。请参阅文档。 解决这个问题的唯一方法是自己实现并使用自定义绘制。这是我解决它的方式。
当您捕获LVN_ITEMCHANGING时,您可以轻松地防止用户选择一个项目。只需过滤状态更改为LVIS_SELECTED并返回TRUE以防止更改即可。
您可以提供视觉反馈。我会派生一个类CMFCListCtrl
并重写OnGetCellBkColor
和OnGetCellTextColor
方法来实现它。
我还会重写其对选择的响应,以在选择不可选择的项目时取消选择。但是对于这部分,我不太确定是否可行。