http://bugs.winehq.org/show_bug.cgi?id=59034
--- Comment #6 from Paul Gofman pgofman@codeweavers.com --- The (occasional, I saw that once but have troubles reproducing that here) black screen is most likely the consequences of the window being minimized upon first show (which is seen as such in virtual desktop mode). Without virtual desktop the window also gets minimized with the first ShowWindow but soon gets unminimized by window manager. That sometimes results in a faulty state due to some race (which is a bug on its own probably but not related here, the minimization on the first show window indeed ends up being wrong with the blamed commit). The game indeed remembers the last window state (position, minimized / maximized), so if it was minimized by user upon next run it will start minimized due to that reason, what happens in this case is unrelated to the blamed commit and this bug.
So the launcher starts the actual program with STARTUPINFO.dwFlags = STARTF_USESHOWWINDOW and STARTUPINFO.wShowWindow = SW_SHOWMINIMIZED (for some purpose totally unclear to me) and then the app itself shows it (MDI frame overlapped) window with ShowWindow( SW_NORMAL ). With the blamed commit that gets replaced with startupinfo's SW_SHOWMINIMIZED resulting in the observed behaviour. Turns out the window in question is created being owned by another WS_POPUP window and under these conditions showing of this window is not subject to fix up by startup info (nor resets 'firstness' of show window, showing eligible window after would catch starup info flag but that doesn't seem to happen with the app).
I sent a MR: https://gitlab.winehq.org/wine/wine/-/merge_requests/9578