From: Vladimir Prus (ghost_at_[hidden])
Date: 2004-03-04 02:17:53
David Turner wrote:
>> So, the code to implement graph drawing would have to be
>> freestanding function that takes window as parameter. What
>> does it buy?
> Good design, for one thing. What business does a window have knowing
> about graphs? A window is a window is a window. Same for a drawing
> surface. I've seen too many 3000-line CMyDialog: public CDialog classes
> to buy the reuse-is-inheritance argument.
So, if I want to create a widget for drawing graph, I'll have to write:
void draw_the_graph(window w, ....)
void handle_click(window w, ....)
// Add new vertex
void handle_right_click(window w, ...)
// show vertex properties, if mouse points
// to a vertex
w.on_draw = &draw_the_graph;
w.on_mouse_click = &handle_click;
w.on_mouse_right_click = &handle_right_click;
? What are the chances that handle_right_click can be reused anywhere else,
is it really independent from GUI, and isn't this too complex a solution?
Note that I buy the idea of non using inheritance for dialogs, to a certain
degree. It just seems that for more complex cases this won't work as nice.
> If you _really_ want to create a CMyWindow class, you can always use
In the case above, I'd have to assign to all the signal handlers in the
constructor. Ok, I think I have live with it, so it's not so elegant.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk