Theming widgets

Mike Hearn mike at
Wed Feb 25 05:28:21 CST 2004

On Tue, 24 Feb 2004 22:04:13 -0500, Kevin Koltzau wrote:
> I'm starting to work on theming some widgets, and I've come up with a few methods of doing this:
> 1) Add theming code to every widget itself, static link to uxtheme.dll
> 2) Add theming code to every widget itself, using LoadLibrary/GetProcAddress
> 3) Subclass widgets when uxtheme.dll is loaded and override default painting

4) Theme all widgets with a hard link to uxtheme but have a "Win98 look"
theme which replicates the current drawing?
> Windows takes a totally different approach, using a different version of
> common controls that implement theming, under windows in order to enable
> theming you first need a manifest to load the proper version of
> comctrl32 then you also must call InitCommonControls which registers the
> standard controls (BUTTON,EDIT,etc)

Well, to be strictly like Windows then I guess we could actually build
comctl32 twice with #ifdefs etc for the theming code.
> Going with that, I think #3 might be the best option, and extend
> InitCommonControls to subclass the standard controls if theming is
> enabled

That sounds rather complicated and like it might introduce further bugs
when apps don't expect controls to be already subclassed...

thanks -mike

More information about the wine-devel mailing list