【问题标题】:Need only some rows in a CListCtrl control to have check boxes只需要 CListCtrl 控件中的某些行具有复选框
【发布时间】:2008-10-10 09:53:04
【问题描述】:

我正在使用 CListCtrl 控件在我的 MFC 应用程序中显示信息。目前我在 SetExtendedStyle 中设置了 LVS_EX_CHECKBOXES,因此控件中的所有行旁边都有一个复选框。然而,我想要的是控件中只有一些行有复选框。这可能吗 ?如果是这样是怎么做到的?

谢谢

伊恩

【问题讨论】:

    标签: mfc


    【解决方案1】:

    对于每个不应该有复选框的项目:

    LVITEM lvi;
    lvi.stateMask = LVIS_STATEIMAGEMASK;
    lvi.state = INDEXTOSTATEIMAGEMASK(0);
    ::SendMessage(m_hWnd, LVM_SETITEMSTATE, nItem, (LPARAM)&lvi);
    

    要“创建”项目的复选框:

    SetCheck(Item, true/false);
    

    【讨论】:

    • 快速Q - 点击复选框所在的空间会出现一个,是我,还是ClistCtrl的一个功能?
    • @Serge:gbjbannb 有什么答案吗?
    【解决方案2】:

    是的。您需要做的是创建复选框的位图并将其包含在回调中。您的位图之一将是空白的。

    或者,您可以进行一些所有者绘图并调用 DrawFrameControl 函数。

    您还可以添加代码来测试鼠标点击并做出相应的响应。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      相关资源
      最近更新 更多