在MFC的CListCtrl中更改项目中特定字符的颜色
Changing color of a specific character in an item in CListCtrl in MFC
我有一个CListCtrl,我需要从列表中的每个单元格的文本中更改特定字符/字符集(我通过比较选择)的颜色。
我知道如何改变单元格的整个文本的颜色,当我找到字符/字符集(通过使用'strstr'命令),但我找不到一个例子,显示如何只改变字符/字符集。
下面是我的代码示例:
void Agenda::OnCustomdrawMyList( NMHDR* pNMHDR, LRESULT* pResult )
{
NMLVCUSTOMDRAW* pLVCD = (NMLVCUSTOMDRAW*)pNMHDR;
*pResult = CDRF_DODEFAULT;
if (CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage)
{
*pResult = CDRF_NOTIFYITEMDRAW;
return;
}else if (CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage)
{
*pResult = CDRF_NOTIFYSUBITEMDRAW;
return;
}else if ( (CDDS_SUBITEM | CDDS_ITEMPREPAINT) == pLVCD->nmcd.dwDrawStage )
{
// So right now I am in the stage where a SUBITEM is PREPAINTED
int nItem = pLVCD->nmcd.dwItemSpec;
int nSubItem = pLVCD->iSubItem;
char a[100];
listControl.GetItemText(nItem,nSubItem,a,100);
COLORREF textColorFound, textColorDefault;
textColorDefault = RGB(0,0,0);
pLVCD->clrText = textColorDefault;
char* startingFrom;
if( (startingFrom = strstr(a,filterText)) != NULL ) {
// Could I set a pointer here or something like that so
// the coloring could start only from 'startingFrom'
// and stop at 'strlen(filterText)' characters?
textColorFound = RGB(205,92,92);
pLVCD->clrText = textColorFound;
}
*pResult = CDRF_DODEFAULT;
}
}
- listControl是我的CListCtrl的变量
- 其他的都是不言自明的
不行,你不能这么做。你要做的是自定义绘制文本的问题。这将是棘手的,因为你将不得不用两个不同的调用来完成它,在这两个调用之间,你将不得不手动调整颜色和绘图位置,以考虑字符间距等。你最好希望你不需要做多行输出。
看一下Michael Dunn在CodeProject上的文章《使用自定义绘制在列表控件中做整洁的事情》,以获得一些关于如何进行的想法。
或者,如果您可以使用CodeJock的Toolkit Pro工具包,您可以利用他们的"XAML"支持(我使用引号是因为它不是真正的 XAML,而是他们自己实现的XAML的子集),并让他们做所有艰苦的工作。
挖掘同样的问题;但我不会去这么远的修改/添加到默认的Windows行为绘画字符串…显然,这将是结束,它的所有者绘制。(我很高兴见到你)。
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- C++上输出的字符数组中的不同颜色字符
- 我如何将特定字符设置为多维数组中的不同颜色
- 将双rgba颜色值转换为十六进制字符
- 在MFC的CListCtrl中更改项目中特定字符的颜色
- 如何创建带有自定义颜色的中文和日文字符的标签