我创建了一个列表视图类,它使用Custom Draw进行渲染。这一切都很好,除了它没有渲染任何东西。我将其父窗口子类化为NM_CUSTOMDRAW
消息作为WM_NOTIFY
消息。但是,似乎WM_NOTIFY
仅在创建控件期间触发了几次,之后再也没有触发过。所以NM_CUSTOMDRAW
代码永远不会被执行。
我查看了Winspector Spy,看看控件是否在父窗口中正确布局,看起来没问题。
有没有人知道我可能做错了什么?
可以在网上找到代码:
答案 0 :(得分:2)
为什么要在CDDS_ITEMPOSTPAINT中绘制文字?您应该在CDDS_ITEMPREPAINT中绘制文本并返回CDRF_SKIPDEFAULT。另外,你不应该在NMCUSTOMDRAW中使用rect,调用ListView_GetItemRect来获取你真正追求的矩形(LVIR_LABEL用于文本等)
答案 1 :(得分:0)
看起来你并没有使用LVS_OWNERDRAWFIXED
样式,这可以解释为什么你没有得到所有者绘制的消息。
答案 2 :(得分:0)
我需要在创建列表视图后调用ShowWindow(mHandle, SW_SHOW);
。
卫生署!