On Mon Jul 21 02:14:37 2025 +0000, Zhiyi Zhang wrote:
The issue happens because comctl32 v6 and v5 were both trying to register "SysDateTimePick32" due to the "if (is_comctl32_class( name->Buffer )) ... else (!RtlFindActivationContextSectionString(...))". Because "SysDateTimePick32" is a comctl32 class, the version is not appended to the window class. So, comctl32 v6 still tries to register "SysDateTimePick32". Removing the else allows comtl32 v6 to get the version from its manifest and uses "6.00.xx!SysDateTimePick32". Comctl32 v5 has no manifest on Wine, so its behavior is the same. On Windows, comctl32 v5 also has a manifest, but the `versioned` property is set to `no`. You can find it on Windows 10 at C:\Windows\WinSxS\Manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_5.82.19041.5915_none_793527b5243cb406.manifest
... <windowClass versioned="no">SysDateTimePick32</windowClass> ...
Wouldn't you need to reference sxs 5.82 version explicitly using application manifest? So unless application requests specific 5.x version (if that's really the purpose of having this manifest) it doesn't matter if our v5 has manifest or not. I think we don't have to care about that at this point.