correct comctl32 implementation

Nikolay Sivov bunglehead at
Fri Mar 11 03:28:10 CST 2011

On 3/11/2011 06:22, Andrew Green wrote:
> I have been researching how i could implement the gsoc Theming -
> Implement Wine theming support.
> Though I'm a bit confused what is wanted.
> So is the case that completely separate dll's should be written for
> different versions and be loaded by side-by-side assembly.
> So you would end up with "comctl32v5.dll","comctl32v6.dll","comctl32v7.dll"?
> Would these be 3 different code basses or should they be made to share
> most of there code?
Multiple comctl32 should be the last thing to think about, only if 
there's absolutely no way to
implement everything needed in one comctl32.
> > From what I understand uxtheme already loads XP theme files. So would
> all the work be isolated to creating different versions of comdlg32
> and comctl32?
No sure what you mean. uxtheme purpose is to load theme data, draw theme 
primitives and
retrieve theme components data.

Client dll such as comctl32 should only use that public api when drawing 
controls, that's all.
Also comdlg32 was never a question, cause it doesn't provide new controls.
> Also does wine support side by side assembly? I did a very quick
> google search and i didn't see anything.
Yes wine does support installation and loading of SxS assemblies, and by 
assembly I mean native dlls installed in SxS
directory and referenced with embedded or external manifest file. Loader 
supports manifest files, not fully but simple things should work.
> I hope I'm not asking too much at once and/or too silly questions.
No, it's not silly to ask at all. But one of the most important things 
to be done for that is to implement support of window class redirection. 
In version 6 all user32 controls are reimplemented with theme support in 
comctl32, while user32 classes are kept of course. This is done with 
specific entries in comctl32 manifest, on load comctl32 all builtin 
classes are re-registered to the ones from comctl32. I definitely want 
to see some solution for that, having themed comctl32 controls while 
scrollbars and buttons are drawn with default appearance makes theme 
support kind of useless.

More information about the wine-devel mailing list