在 MFC 的 CListCtrl 类中,没有直接提供名为 CListCtrl::SetInsertMarkColor 的方法来设置插入标记的颜色。但是,你可以通过使用消息映射处理 WM_NOTIFY 消息,具体来说,是处理 LVN_ODCACHEHINT 或 NM_CUSTOMDRAW 消息来实现对插入标记颜色的自定义。

以下是一个简单的示例,展示如何通过处理 NM_CUSTOMDRAW 消息来修改插入标记的颜色:
// 假设 m_listCtrl 是你的 CListCtrl 对象

// 在消息映射中添加
ON_NOTIFY(NM_CUSTOMDRAW, IDC_YOUR_LIST_CTRL_ID, OnCustomDraw)

// 处理消息的函数
void CYourDialog::OnCustomDraw(NMHDR* pNMHDR, LRESULT* pResult)
{
    LPNMLVCUSTOMDRAW lplvcd = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);

    switch (lplvcd->nmcd.dwDrawStage)
    {
    case CDDS_PREPAINT:
        *pResult = CDRF_NOTIFYITEMDRAW;
        break;

    case CDDS_ITEMPREPAINT:
        // 在这里处理每个项的自定义绘制
        // 可以通过 lplvcd->nmcd.dwItemSpec 获取当前项的索引

        // 如果你想要改变插入标记的颜色,可以设置 lplvcd->clrTextBk 或 lplvcd->clrText
        // 例如,设置插入标记的背景颜色为红色
        if (lplvcd->nmcd.uItemState & CDIS_INSERTED) {
            lplvcd->clrTextBk = RGB(255, 0, 0);  // 红色背景
        }

        *pResult = CDRF_DODEFAULT;
        break;
    }

    *pResult = 0;
}

在上述示例中,我们在处理 CDDS_ITEMPREPAINT 阶段判断当前项是否为插入标记,如果是,就通过设置 lplvcd->clrTextBk 来改变插入标记的背景颜色。你可以根据需求修改颜色值。

请注意,具体的实现可能会根据你的需求和应用的架构而有所不同。


转载请注明出处:http://www.zyzy.cn/article/detail/18560/MFC/CListCtrl