https://bugs.winehq.org/show_bug.cgi?id=16692
--- Comment #29 from Jan-Peter Nilsson peppe@bsnet.se --- (In reply to Paul Gofman from comment #27)
Did you see what it passes in lpstrFileTitle? I have no game to test, but I made a brief unit test, with lpstrFile and nMaxFile set to 0, but lpstrFileTitle and nMaxFileTitle set to valid buffer, Windows (XP & 7) returns the selected file name to the provided lpstrFileTitle in this case, while Wine does not.
It does pass nMaxFileTitle/lpstrFileTitle.
Patching wine so that we insert the filenamename in lpstrFileTitle even without lpstrFile I can see that the construction set does get the filename and it seems to work properly as long as you don't change directory.
If you change directory it will save to the 'Data Files'* directory anyway. It does set the OFN_NOCHANGEDIR flag, so GetSaveFileNameA does not change the working directory.
It is possible this works the same on Windows, I will try.
* 'Data Files' is the default directory, it is passed in to lpstrInitialDir, working directory is 'C:\Program Files\Bethesda Softworks\Morrowind' so that becomes 'C:\Program Files\Bethesda Softworks\Morrowind\Data Files'