
I am not looking into embedding any intelligent objects in the 'canvas' to begin with, however I am trying to keep that in mind. The component approach of ATL/WTL is very interesting from that point of view, wherein you add your messaging by multiple derivation, combined with CRTP. This Might be a very useful mechanism to make dumb drawing objects intelligent. For example, if I had a dumb line, it should be possible to 'attach' a class that can detect if that line is being grabbed with the mouse and so on.
Its an interesting idea - except that I personally think that all events should be available to be handled from the 'line', at runtime, so that you can dynamically hook up events. By 'attaching' the 'grab' property to a line, you have constrained the line to never being able to dynamically hook up a different type of event. The bigest issue that you will have with attaching events to a simple item, such as a line, is that there is a fundamental limit on the number of window handles available in the system - and this limit is quite low under win32. To implement this design, your canvas will have to synthesise events like MouseEnter, MouseLeave, etc regards, Mathew Robertson