The normal way to implement custom (sub)item draw in listview is to handle the NM_CUSTOMDRAW notification in the parent class, and do the drawing there.
However I am writing a reusable listview derived window class and would like to avoid having to force the users to reflect the notifications to the instantiated windows everywhere they are used.
I know of two alternative ways of doing this, but both have drawbacks
1: Register two custom window classes, one which is derived from the listview and one which is what is used by whatever instantiates my class. The second class just creates the custom listview as a child window to intercept all notifications, and then either reflects these or forwards them to its parent. Drawbacks are: I also need to forward all external messages that are sent to the outer control to the inner control, or expose the inner control via a custom window message (Similar to how the header control in the listview may be accessed). All notifications must also be forwarded up to its parent.
2: The control could subclass its parent window and intercept WM_NOTIFY messages at that stage. Drawbacks: This is a bad idea, and also a very brittle way of doing things.
Alternatively: 3. Continue to require notification reflection.
Is there a better way of being notified about the custom draw short of doing full custom draw, or is there someway of doing full custom draw and triggering default drawing first and then painting the contents of the columns which display custom data afterwards?