c - 如何在 ListView 中插入彩色文本?

标签 c windows mfc

我有一个包含 3 个列的 ListView 。前两列有值,第三列为空。我想知道,我怎样才能在第三列中插入彩色文本?我不想为整行着色,只为第三列着色。

提前致谢!

坎比

最佳答案

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

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

将其中一个添加到常用位置:

ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)

然后将这个方法添加到类中。

void CMyListView::OnCustomDraw(NMHDR* nmhdr, LRESULT* result)
{
    LPNMLVCUSTOMDRAW  vcd = (LPNMLVCUSTOMDRAW)nmhdr;

    switch(vcd->nmcd.dwDrawStage)
    {
        case CDDS_PREPAINT :
        {
            *result = CDRF_NOTIFYITEMDRAW;
            break;
        }

        case CDDS_ITEMPREPAINT:
        {
            vcd->clrText = RGB(255,0,255); //change the colour of the second row.
            *result = CDRF_NOTIFYSUBITEMDRAW;
            break;
        }
        default:
            *result = 0;
            break;
    }
    return;
}

关于c - 如何在 ListView 中插入彩色文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282621/

相关文章:

windows - 如何为 svn 提交和更新编写批处理文件

c - 如何使用kbhit和getch(C语言编程)

c++ - 如何在 MFC 中向 CMenu 添加子菜单?

c++ - DwmIsCompositionEnabed 不存在于 afxglobals.h 中

c++ - SetWindowPos 对工具提示没有影响

C:如何从 scanf 读取值直到读取给定值

c++ - 无效、无效、C 和 C++

c++ - WinHTTP 在 8 KiB 后停止下载

使用标准输入的 C-fgets() 不起作用

c - Makefile - 用函数替换冗余