更改 CListCtrl 中的特定项目颜色?

Posted

技术标签:

【中文标题】更改 CListCtrl 中的特定项目颜色?【英文标题】:Change Specific Items Color in CListCtrl? 【发布时间】:2015-05-18 20:02:31 【问题描述】:

我想将所有 Target Name 的颜色更改为红色 Include in Name1、Name2 和 Name3。并且每个测试名称为黑色或其默认颜色。 lvColumn 类型是 LVCOLUMN。 任何想法如何做到这一点?......

lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
    lvColumn.fmt = LVCFMT_LEFT;
    lvColumn.cx = 120;
    lvColumn.pszText = "Name1";
    m_szList.InsertColumn(0, &lvColumn);

    lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
    lvColumn.fmt = LVCFMT_LEFT;
    lvColumn.cx = 75;
    lvColumn.pszText = "Name2";
    m_szList.InsertColumn(1, &lvColumn);

    lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
    lvColumn.fmt = LVCFMT_LEFT;
    lvColumn.cx = 80;
    lvColumn.pszText = "Name3";
    m_szList.InsertColumn(2, &lvColumn);


    LVITEM lvItem;
    int nItem;

    lvItem.mask = LVIF_TEXT;
    lvItem.iItem = 0;
    lvItem.iSubItem = 0;
    lvItem.pszText = "Test1";
    nItem = m_szList.InsertItem(&lvItem);

    m_szList.SetItemText(nItem, 1, "Target");
    m_szList.SetItemText(nItem, 2, "Test3");

    lvItem.mask = LVIF_TEXT;
    lvItem.iItem = 1;
    lvItem.iSubItem = 0;
    lvItem.pszText = "Test2";
    nItem = m_szList.InsertItem(&lvItem);

    m_szList.SetItemText(nItem, 1, "Test1");
    m_szList.SetItemText(nItem, 2, "Target");

    lvItem.mask = LVIF_TEXT;
    lvItem.iItem = 2;
    lvItem.iSubItem = 0;
    lvItem.pszText = "Target";
    nItem = m_szList.InsertItem(&lvItem);

    m_szList.SetItemText(nItem, 1, "Test1");
    m_szList.SetItemText(nItem, 2, "Test2");

【问题讨论】:

【参考方案1】:

您需要处理NM_CUSTOMDRAW 消息并更改该处理程序中的文本颜色。

【讨论】:

先生,请帮我做。不知道怎么办? 请查看这篇文章:codeproject.com/Articles/79/… 先生,在那个项目中,他们将整行设置为红色。但在我的情况下,目标名称设置在不同的位置。如何在这里做同样的事情? 您需要检查pLVCD->nmcd.iSubItem。那是你的专栏。在msdn.microsoft.com/ru-ru/bb774778查看NMLVCUSTOMDRAW结构的定义 别怪迈克。您有足够的链接和信息来完成这项确切的任务。您应该先阅读。

以上是关于更改 CListCtrl 中的特定项目颜色?的主要内容,如果未能解决你的问题,请参考以下文章

在 CEdit 文本更改时选择 CListCtrl 中的项目

在 MFC 中更改 CListCtrl 整列的背景颜色

ClistCtrl 设置项目的颜色

CListCtrl 和 CImageList 访问 HBITMAP 进行修改

在 CListCtrl 上设置背景单元格颜色

如何在 Sqlite 数据库中的特定数据上更改 Listview 中的行颜色