Opus 3D revisited
So yes, writing a Window framework was indeed a stupid idea and I've given up. I've decided instead to rewrite Opus, my low-poly 3D modeller, using Qt. I like Qt personally.
I've been developing the above for the main workspace area. It's a SplitWidget. You can take any child widget and split it horizontally or vertically, making it clone its child widget. You can also remove widgets, collapsing their split back down. I'm working on a system to maximize a widget to the entire area of the split widget manager window and restore it.
It'll mean a nice, flexible central area for the package. I've just been running a sanity check that randomly splits and collapses widgets for about two hours and nothing leaks or gets lost so seems pretty stable. A child widget just derives from SplitWidgetChild and implements the obligatory virtual clone() method and you're good to go.
I seem to be suffering from the common phenomena that is a variant of the inner platform effect - when developing with Qt Creator, you tend to end up wanting your application to look like Qt Creator, since it is so damn sexy, hence the tool bar design. This application will be Windows only since I'm using Direct3D for the rendering (no, I don't want cross platform and don't want to use OpenGL but thank you anyway) but Qt makes the development cycle far faster and more flexible. I use it all day at work for our software, which is progressing very well incidentally, and am fully converted.
I've noted, by the way, that the amazing intellisense of Qt Creator seems very less amazing when using non-Qt code. I guess the reason Creator always seemed to outshine VS in this respect is because it is more domain-specific. Oh well, it still rocks.