https://bugs.winehq.org/show_bug.cgi?id=39637
--- Comment #9 from Nikolay Sivov bunglehead@gmail.com --- (In reply to Anastasius Focht from comment #7)
Redirection of window classes according to the current activation context is supported by USER32 in Windows XP and higher. Part of the feature is that any module, such as COMCTL32.DLL, that implements window classes can declare its support through an assembly manifest. If a window cannot be created because the requested class is not yet registered, but the class is supported by the module associated with the current activation context, then USER32 can call that module to get the class registered, and then retry the window creation. The module must export a function named RegisterClassNameW. COMCTL32 does this in versions 5.82 and 6.0 from Windows XP SP2, but not Windows XP SP3, and higher, with the effect that InitCommonControlsEx becomes unnecessary.
Right, RegisterClassNameW is not longer used, versioned classes have to be registered on dll initialization. Button is actually not a bad case to start working on this, I believe it's best to duplicate button.c, and extend it with new styles and messages, and of course theme_button.c disaster has to go away.