【发布时间】:2011-03-08 07:33:30
【问题描述】:
我有一个功能,可以将文件保存到用户指定的位置。我正在使用 GetSaveFileName() 来显示“另存为”对话框。然后我使用它返回的路径将文件写出到该位置。我注意到当用户在 XP 机器上选择 CD-RW 驱动器时它不起作用。同样的过程在 Vista 和 Windows 7 上也能正常工作。我做了以下观察:
- GetSaveFileName() 返回的路径返回在 Win7/Vista 上选择 CD 刻录机根文件夹(在我的情况下为 F:)时临时暂存区的路径。
- 在 XP 上,选择 CD 刻录机根文件夹只会返回 F:\ 作为路径。但是,如果我使用“另存为”对话框创建一个子文件夹并将文件保存在此文件夹中(例如 F:\folder),则路径是临时文件夹的路径。
- 在 XP 中使用其他应用程序(例如记事本)将正确重定向到 F:\ 的临时文件夹。
所以只有在 XP 上保存到 CD 刻录机的根文件夹时才会出现问题。如何在 XP 中实现与记事本相同的功能并将另存为重定向到临时文件夹,以便我有一个可以为 CreateFile() 写入的路径?
【问题讨论】:
-
您能否发布一个代码示例,您如何使用
GetSaveFileName,尤其是您在OPENFILENAME中使用的标志。您是否使用例如OFN_NOTESTFILECREATE标志? -
这大概是我正在使用的:OPENFILENAME openFileName; ZeroMemory(&openFileName, sizeof(OPENFILENAME)); openFileName.lStructSize = sizeof(OPENFILENAME); openFileName.Flags = OFN_OVERWRITEPROMPT; openFileName.lpstrFilter = "压缩文件 (*.zip)"; GetSaveFileName(&openFileName);
标签: windows visual-c++ winapi windows-xp