Nikolay Sivov (@nsivov) commented about dlls/msvfw32/mciwnd.c:
else lParam = (LPARAM)cs->lpCreateParams;
/* If it's our internal class pointer, file name is a unicode string */
if (cs->lpszClass == mciWndClassW)
/* If it's our internal class name, file name is a unicode string */
if (!lstrcmpiW(cs->lpszClass, mciWndClassW))
It seems to me that such comparison will always match now, because you're checking class name from within WM_CREATE of the same class. I don't know exactly what was the point of original condition, maybe it's an equivalent of IsWindowUnicode() check instead? What you could probably test is which message is sent when mci window is created with CreateWindowA vs CreateWindowW, with or without a parent. And when with a parent, with both A and W parents.