我想从我的程序中保存一些数据,我试图给用户一个对话框,他可以在其中选择他想要保存数据的位置和文件名。
此外,我想预设一个文件名,以便用户获得他可能想要的文件名的建议,如果他喜欢,他可以简单地单击对话框中的“保存”,如果不喜欢,他可以覆盖预设。
我发现了数百个如何初始化
OPENFILENAMEW
的示例,但没有一个预设文件名,而我自己的尝试却不起作用。
我想要预设的文件名是数据的一部分,并以
wstring
的形式存在,因此为了更容易理解,我将在这里定义一个。
抛开我确实开始工作的其他部分,它归结为:
wstring MyFileName = L"PresetFileName";
OPENFILENAMEW ofn;
WCHAR szFileName[MAX_PATH];
ZeroMemory(&szFileName, sizeof(szFileName));
ofn.lpstrFile = szFileName;
从
wstring
转换为WCHAR
,我就是无法理解。对于我在网上查找的无数示例而言,类似的问题大多都是用“您无法从 wstring 转换为 WCHAR”来回答,但我所知道的几乎所有文本编辑器都在“另存为”对话框(但可能不使用 wstring
)。
那么,如何在不缩短
MyFileName
大小的情况下将 szFileName
变成 szFileName
呢?
正如 @JonathanPotter 回答的那样,使用 StringCchCopy 将一个字符串复制到另一个字符串。