如何更改CListCtrl列的颜色

2023-12-04

我想将特定列的背景颜色更改为对话框的颜色(灰色)。我怎样才能实现它?

void CUcsOpTerminalDlg::OnCustomdrawFeatureList(NMHDR *pNMHDR, LRESULT *pResult)
{
  LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);

  // TODO: change color 

  *pResult = 0;
}

Thanks


如果您使用的是“新”MFC 功能包类(VS 2008 SP1 及更高版本),则可以使用 CMFCListCtrl 而不是 CListCtrl 并使用CMFCListCtrl::OnGetCellBkColor.

您必须从中派生自己的类并覆盖CMFCListCtrl::OnGetCellBkColor。在那里,只需检查列索引并返回您需要的背景颜色:

COLORREF CMyColorfulListCtrl::OnGetCellBkColor(int nRow,int nColumn)
{
    if (nColumn == THE_COLUMN_IM_INTERESTED_IN)
    {
        return WHATEVER_COLOR_I_NEED;
    }
    return CMFCListCtrl::OnGetCellBkColor(nRow, nColumn);
}

或者,如果您需要对话框来做出决定,您可以从该函数查询对话框:

COLORREF CMyColorfulListCtrl::OnGetCellBkColor(int nRow,int nColumn)
{
    COLORREF color = GetParent()->SendMessage(UWM_QUERY_ITEM_COLOR, nRow, nColumn);

    if ( color == ((COLORREF)-1) ) 
    { // If the parent doesn't set the color, let the base class decide
        color = CMFCListCtrl::OnGetCellBkColor(nRow, nColumn);
    }    
    return color;
}

请注意,UWM_QUERY_ITEM_COLOR 是自定义消息。我通常使用注册的 Windows 消息正如这里所解释的.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改CListCtrl列的颜色 的相关文章

  • 工厂模式:typedef Class *(createClassFunction)(void)

    什么是typedef Class createClassFunction void 或者另一种变化是typedef Class stdcall CreateClassFunction void 代表 这是什么意思 我该怎么解释呢 特别是在工
  • 如何在 .NET 中使 ComboBox 不可编辑?

    我想要一个 仅选择 ComboBox它提供了一个项目列表供用户选择 应在文本部分禁用打字ComboBox控制 我最初对此进行谷歌搜索 发现了一个过于复杂 误导性的建议来捕捉KeyPress event 要使 ComboBox 的文本部分不可
  • 如何让一段代码只执行一次?

    我有一个应用程序 其中有多种功能 每个函数都可以根据用户输入多次调用 但是 我只需要在函数中执行一小段代码一次 最初是在应用程序启动时执行 当稍后再次调用同一函数时 不得执行这段特定的代码 代码在VC 请告诉我处理这个问题最有效的方法 使用
  • 避免使用一本字典的更好代码 - 区分大小写问题

    我有以下方法用数据读取器的值填充字典 数据读取器字段和传递给方法的属性之间可能存在大小写不匹配的情况 在下面的方法中 我首先将属性转换为小写以解决此问题 这会导致两个字典 有没有更好的方法用一本字典来实现这一目标 private Dicti
  • Outlook VSTO 添加上下文菜单项

    我正在尝试将菜单项添加到附件上下文菜单 问题是该项目没有显示 我看过一些例子 他们说这段代码应该可以工作 this Application AttachmentContextMenuDisplay new ApplicationEvents
  • 如何从 vbScript 调用 .NET 代码 (C#/vb.net)?

    我想我可以编译一个 C DLL 然后将其公开为 COM 对象 以便可以从 VBscript 中 CreateObject 我只是不确定执行此操作所涉及的步骤 做到这一点非常简单 但还有很多地方并不那么简单 这在很大程度上取决于您的类需要做什
  • 静态编译器和运行时编译器等术语的实际含义是什么?

    我正在努力学习更多 C 并尝试了解有关不同编译器及其技术的基础知识 我用谷歌搜索了很多次 但每次我都碰巧遇到需要更多解释的新术语 那么 本主题中的静态编译 动态链接等术语实际上意味着什么 某些语言 例如 C 在开始运行 即实际使用 之前将所
  • 使用 .NET 2.0 解析 JSON

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 我有一个用 C 编写的应用程序 带有 NET Framework 2 0 版本 不幸的是 我无法选择更新到较新版本的 NET
  • 我可以在 C# 11 中仅为一个成员设置 SetsRequiredMembers 或其他属性吗?

    考虑以下代码 public record Foo public required string A get init public required string B get init public record Bar Foo publi
  • 当 DWARF 信息仅包含 typedef 时,在 LLDB 中查找函数指针 SBType

    是否可以使用类似的方法找到函数指针 SBTypelldb target FindTypes 鉴于 DWARF 信息似乎只包含该类型的 typedef 而不迭代所有模块中的所有类型 所以在我的 C 代码中我有 typedef struct o
  • AsParallel() 和 Any()?

    我看过这段代码 它使用以下命令检查条件AsParallel and Any bool IsAnyDeviceConnected return m devices Any d gt d IsConnected 并使其更快 bool IsAny
  • 我可以将 OpenCV 的发布配置与我的应用程序的调试配置一起使用吗?

    我正在编写一个通用 Windows 应用程序 它使用 OpenCV 进行相机校准和标签检测等 我希望能够在我自己的 DLL 处于调试模式时使用发布模式 完全优化的 OpenCV DLL 这可能吗 如果是这样 我如何配置 CMake 来实现它
  • 在c++中定义一堆静态方法

    哪个是合适的 class xyz static int xyzOp1 static int xyzOp2 OR namespace xyz static int xyzOp1 static int xyzOp2 当我们使用类标签与命名空间标
  • asp:repeater 折叠表行 - 已更新

    我想知道是否有人对我的问题有创造性的解决方案 我有一个从我的数据库填充的转发器 如下所示
  • 使用遗留代码(使用reinterpret_cast)真的是一种很好的技术吗?

    下面的代码来自一篇关于C 面试问题的帖子here https www toptal com c plus plus interview questions 我从来不知道这种技术 尽管它声称是一种很好的技术 我的问题是 什么情况下需要使用它
  • 从服务器下载图像(cUrl,但接受建议)C++

    我试图通过从服务器 网站 下载图像来设置旋转背景图像 并尝试使用curl 来执行此操作 但是在执行此操作方面取得了0 成功 我的代码的 缩短的 版本如下 我没有收到错误 但是 如何 临时 保存该图像以将其显示为背景 是否有图像 类型变量 或
  • 使用 C 的另一个结构内的灵活长度结构数组

    你好 我正在尝试使用 C 来实现一个简单的结构 2 个盒子 每个盒子包含不同数量的颗粒 main 中传递的粒子的确切数量 我写了以下代码 typedef struct Particle float x float y float vx fl
  • 二叉树和快速排序?

    我有一个家庭作业 内容如下 别生气 担心 我是not请你帮我做作业 编写一个程序 通过使用二分查找的快速排序方法对一组数字进行排序 树 推荐的实现是使用递归算法 这是什么意思 到目前为止 这是我的解释 正如我在下面解释的那样 我认为两者都有
  • 有关shared_ptr的竞态条件示例

    为什么没有竞争条件代码片段 https godbolt org z nEYPYqdqK below include
  • 使用c#在mac上启动外部进程

    我成功地使用 System Diagnostics Process Start 在 Windows 上启动我的外部单声道可执行文件 然而在mac上却失败了 我没有收到任何错误 只是什么也没发生 我尝试按以下方式进行操作 System Dia

随机推荐