【问题标题】:How to insert colored text int a ListView?如何在 ListView 中插入彩色文本?
【发布时间】:2011-01-17 23:09:35
【问题描述】:

我有一个包含 3 个列的列表视图。前两列有值,第三列是空的。我想知道,我以后如何在第三列中插入彩色文本?我不想给整行上色,只给第三列上色。

提前致谢!

坎皮

【问题讨论】:

    标签: c windows mfc


    【解决方案1】:

    您可以使用 CustomDraw 处理程序执行此操作,参考:MSDN Developing Custom Draw Controls in Visual C++

    基本上它很简单(而且 MSDN 很长),但归结为以下几点:

    将其中之一添加到通常的位置:

    ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)

    然后将此方法添加到类中。

    无效 CMyListView::OnCustomDraw(NMHDR* nmhdr, LRESULT* 结果) { LPNMLVCUSTOMDRAW vcd = (LPNMLVCUSTOMDRAW)nmhdr; 开关(vcd->nmcd.dwDrawStage) { 案例 CDDS_PREPAINT : { *结果 = CDRF_NOTIFYITEMDRAW; 休息; } 案例 CDDS_ITEMPREPAINT: { vcd->clrText = RGB(255,0,255); //改变第二行的颜色。 *结果 = CDRF_NOTIFYSUBITEMDRAW; 休息; } 默认: *结果 = 0; 休息; } 返回; }

    【讨论】:

    • 嗨!与此同时,我发现了一个与您的代码非常相似的代码。但我的问题是您的代码每隔两行着色一次,而我发现的是为整列着色。如何检查给定行行和行中我的列表视图的值是多少?这很重要,因为我想根据其中的文本为文本着色。谢谢!
    【解决方案2】:

    @Richard Harrison 使用NM_CUSTOMDRAW 的想法是正确的。

    尽管您应该考虑使用免费提供的 CListView 派生类型之一,而不是重新实现所需的功能。

    Here is a project 我认为可以满足您的需求。

    【讨论】:

    • 非常感谢!这就是我需要的。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    相关资源
    最近更新 更多