https://bugs.winehq.org/show_bug.cgi?id=39637
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |comctl32 Summary|Samsung TV SDK 3.5.2 (MFC |Samsung TV SDK 3.5.2 (MFC |MDI app) crashes on startup |MDI app) crashes on startup | |('comctl32' needs to | |register builtin 'Button' | |class with | |'CS_GLOBALCLASS')
--- Comment #7 from Anastasius Focht focht@gmx.net --- Hello Dmitry,
thanks for the analysis.
I found the activation context dependent behaviour you described also mentioned here:
http://www.geoffchappell.com/studies/windows/shell/comctl32/controls/ (Geoff Chappell about Common Controls)
--- quote --- ... Note that in version 6.00 and higher, COMCTL32 re-implements some of the built-in controls. The implementations in USER32 remain. Both implementations use the same class names. Whether a given control is implemented through COMCTL32 or USER32 depends on the current activation context when the control is created. The affected controls are:
Button, ComboBox, ComboLBox, Edit, ListBox, ScrollBar and Static
The ComboLBox control is obscure. Microsoft documents it as being “available only for use by the system” (yet MSHTML knows of it, admittedly to subclass an existing control, not to create one). The ComboLBox control is essentially a ListBox, with the same window procedure but different class styles, intended to exist only as a child of a ComboBox.
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.
Version 6.10 takes this one step further. The ImageDrag control, new for version 6.10, is outside the machinery of InitCommonControlsEx. Its class name can only be registered through RegisterClassNameW. However, the only use known at present is internal, for COMCTL32 to enhance image lists. --- quote ---
Regards