Original Post
Disclaimer: While I appreciate references to other libraries that are popular I'd prefer a discussion of the topic/subject, not "writing your own system is a lot of work and more than likely its been done better so please check xxxx library". I have a pretty concrete idea of how I want the logic of the controls to work and how to create an easily extensible system for creating custom controls; however, I cannot quite think of a good design for allowing the customization of the "look" or "skin" of the window. Should window's be able to draw themselves and simply allow the user to override a virtual draw function? Perhaps, windows should only exist logically and visibility should be delegate to a renderer of some sorts? Both techniques would achieve the desired results but the second requires a considerably larger amount of glue to achieve the same results with what possible benefits? If that path was chosen what kind of glue can be used to integrate the logical window system into the graphical portion?