我创建了一个使用 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/