更改 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 中的项目