【问题标题】:Problem with a custom drawn list view自定义绘制列表视图的问题
【发布时间】:2011-03-14 09:18:48
【问题描述】:

我创建了一个列表视图类,它使用自定义绘图进行渲染。一切都很好,只是它不渲染任何东西。我将其父窗口子类化以将NM_CUSTOMDRAW 通知作为WM_NOTIFY 消息捕获。但是,WM_NOTIFY 似乎只在创建控件期间触发了几次,之后再也没有触发过。所以NM_CUSTOMDRAW 代码永远不会被执行。

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

有人知道我做错了什么吗?

代码可以在网上找到:

【问题讨论】:

    标签: c++ winapi


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我会解决的。但问题是我根本没有收到 NM_CUSTOMDRAW 通知。
    【解决方案2】:

    您似乎没有使用LVS_OWNERDRAWFIXED 样式,这可以解释为什么您没有收到自绘消息。

    【讨论】:

    • 我相信所有者抽奖是与自定义抽奖不同的概念。无论如何,我尝试设置标志,但仍然没有收到 NM_CUSTOMDRAW 通知。
    【解决方案3】:

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

    哇!

    【讨论】:

    • 就可以了。或使用WS_VISIBLE。
    猜你喜欢
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2011-10-13
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多