在 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_STATEIMAGEMASK
和 INDEXTOSTATEIMAGEMASK
处理状态图像
我有自己的 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_STATEIMAGEMASK
和 INDEXTOSTATEIMAGEMASK