1

在列表视图中实现自定义(子)项目绘制的正常方法是在父类中处理 NM_CUSTOMDRAW 通知,并在那里进行绘制。

但是,我正在编写一个可重用的列表视图派生窗口类,并且希望避免强迫用户将通知反映到使用它们的任何实例化窗口。

我知道这样做的两种替代方法,但都有缺点

1:注册两个自定义窗口类,一个是从列表视图派生的,一个是实例化我的类所使用的。第二个类只是将自定义列表视图创建为子窗口以拦截所有通知,然后反映这些通知或将它们转发给其父窗口。缺点是:我还需要将所有发送到外部控件的外部消息转发给内部控件,或者通过自定义窗口消息暴露内部控件(类似于如何访问列表视图中的标题控件)。所有通知也必须转发给其父级。

2:控件可以继承其父窗口并在该阶段拦截 WM_NOTIFY 消息。缺点:这是一个坏主意,也是一种非常脆弱的做事方式。

或者: 3. 继续要求通知反射。

有没有更好的方法来通知自定义绘制而不是进行完全自定义绘制,或者是否有某种方式可以先进行完全自定义绘制并触发默认绘制,然后再绘制显示自定义数据的列的内容?

4

0 回答 0