2010-07-11 64 views
0

我创建了一个使用自定义绘制进行呈现的列表视图类。除非它不呈现任何东西,它一切运作良好。我将其父窗口划分为NM_CUSTOMDRAW通知作为WM_NOTIFY消息。但是,看起来WM_NOTIFY在创建控件时只触发了几次,之后再也不会触发。所以NM_CUSTOMDRAW代码永远不会执行。自定义绘制列表视图问题

我用Winspector Spy进行了检查,看看控制是否在父窗口中正确布置,并且看起来很好。

有没有人有关于我可能做错什么的线索?

的代码可以在网上找到:

回答

0

我需要在创建列表视图后调用ShowWindow(mHandle, SW_SHOW);

Doh!

+1

这样做。或者使用'WS_VISIBLE'。 – 2010-07-11 11:58:46

2

你为什么要CDDS_ITEMPOSTPAINT绘制文本?您应该可以在CDDS_ITEMPREPAINT中绘制文本并返回CDRF_SKIPDEFAULT。此外,你不应该在NMCUSTOMDRAW中使用矩形,调用ListView_GetItemRect来获得你真正的矩形(LVIR_LABEL为文本等)

+0

谢谢,我会解决这个问题。但问题是,我根本没有收到NM_CUSTOMDRAW通知。 – StackedCrooked 2010-07-11 09:57:05

0

它看起来不像你使用LVS_OWNERDRAWFIXED风格,这可以解释为什么你不要得到所有者提示信息。

+1

我相信所有者绘制是一个与自定义绘制不同的概念。无论如何,我试图设置标志,我仍然没有得到NM_CUSTOMDRAW通知。 – StackedCrooked 2010-07-11 09:59:41