c++ - 自定义绘制 ListView 的问题

标签 c++ winapi

我创建了一个使用 Custom Draw 进行渲染的 ListView 类。一切都很好,只是它不渲染任何东西。我将其父窗口子类化以将 NM_CUSTOMDRAW 通知捕获为 WM_NOTIFY 消息。但是,WM_NOTIFY 似乎只在控件创建期间触发了几次,此后再也不会触发。所以永远不会执行 NM_CUSTOMDRAW 代码。

我检查了 Winspector Spy,看看控件在父窗口中的布局是否正确,这似乎没问题。

有没有人知道我可能做错了什么?

代码可以在网上找到:

最佳答案

为什么要在 CDDS_ITEMPOSTPAINT 中绘制文本?您可能应该在 CDDS_ITEMPREPAINT 中绘制文本并返回 CDRF_SKIPDEFAULT。另外,你不应该在 NMCUSTOMDRAW 中使用 rect,调用 ListView_GetItemRect 来获取你真正想要的 rect(LVIR_LABEL 用于文本等)

关于c++ - 自定义绘制 ListView 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221553/

相关文章:

c++ - libx264.dll 公开函数 x264_encoder_open_130,这不应该是 x264_encoder_open 吗?

C++ 替代模板化数据成员

c++ - 将结构传递给线程

c++ - 设置滚动拇指的大小?

c++ - 哪个模块在 Windows 上实现了 CreateWindowW?

c++ - HeapAlloc 返回 0xC0000017 : Not Enough Quota

c++ - 绑定(bind) : Socket operation on non-socket

c++ - 如何从 C++ 中的 get 函数操作数据?

c++ - 从包含 m 行的文件中取出 n 行,必要时重复该文件(懒惰地)

c - Win32 应用程序中的窗口无法正常关闭