Nikolay Sivov (@nsivov) commented about dlls/user32/class.c:
- if (!MultiByteToWideChar( CP_ACP, 0, className, -1, name, MAX_ATOM_LEN + 1 )) - return FALSE; - return UnregisterClassW( name, hInstance ); + if (IS_INTRESOURCE( class_name )) init_class_name( &name, (const WCHAR *)class_name ); + else + { + if (!MultiByteToWideChar( CP_ACP, 0, class_name, -1, nameW, MAX_ATOM_LEN + 1 )) return 0; + RtlInitUnicodeString( &name, nameW ); } - return UnregisterClassW( (LPCWSTR)className, hInstance ); + get_class_version( &name, NULL, NULL ); + + ret = NtUserUnregisterClass( &name, instance, &menu_name ); + if (ret) free_menu_name( &menu_name ); + return ret;
Why is this better than calling the -W variant? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8358#note_107098