According to https://testbot.winehq.org/JobDetails.pl?Key=122456 it looks like: - MCIWndCreateA maps the lParam parameters from ANSI to Unicode and calls MCIWndCreateW (that what we currently do) - (*) MCIWndCreate(A|W) generate a MCIWNDM_OPENW message (in WM_CREATE handling (*)) - both CreateWindowEx(A|W) succeed with an ANSI string as lParam (and fail with Unicode string - that's not included in the testbot, but generate a MCIWNDM_OPENA message (*)) - so there's a trigger to pickup the unicode version + it's likely not linked to heuristics on lParam (as it would succeed above) + checked for all windows creation parameters => didn't find meaningful differences in styles/ext styles between MCIWndCreate and CreateWindowEx so no clue yet on what the trigger is. could be global variables (but need more checks for thread safeness and reentrancy (creating a second mci window while creating a first one) (*) from an extended version of the test (not pushed on testbot) that subclasses the wnd proc -- https://gitlab.winehq.org/wine/wine/-/merge_requests/726#note_7547