在 CListCtrl 中禁用复选框 (LVITEM)

Disable Checkbox (LVITEM) in the CListCtrl

我有自己的 CListCtrl 实现,带有复选框 (LVITEM) 及其子项。我可以让子项目 disabled 但我不知道如何禁用 checkboxes.

如何在 CListCtrl 中禁用 灰色 项目,而项目是 LVITEM

没有禁用复选框的状态。

但您可以阻止 LVN_ITEMCHANGING 中的状态更改。在对列表视图应用任何更改之前发送此通知。

void CWzProjectStatistic_User::OnItemchangingLcData(NMHDR* pNMHDR,LRESULT* pResult) 
{
  LPNMLISTVIEW pNMLV= reinterpret_cast<LPNMLISTVIEW>(pNMHDR);

  // clear result (accept changes)
  *pResult = 0;

  // Only if the state changes
  if ((pNMLV->uNewState&LVIS_STATEIMAGEMASK)!=(pNMLV->uOldState&LVIS_STATEIMAGEMASK))
  {
    if (IfThisIsADisabledEntry(pMLV))
      *pResult = 1;

还有机会实现您自己的图形和复选框处理。您可以将自己的图像列表分配给列表视图,并且可以使用自己的 LVIS_STATEIMAGEMASKINDEXTOSTATEIMAGEMASK

处理状态图像