问题描述
我目前正在设置一个使用 Win32 的编辑器作为对自己的挑战,但我的保存文件的方法由于某种原因没有保存文件。我多次检查我的资源并查看互联网上的线程,但我要么没有首先在那里解决问题,要么根本没有帮助。我在这里监督什么吗?
void SaveUserFile(HWND hwnd)
{
OPENFILENAME ofn;
char szFile[MAX_PATH] = "";
ZeroMemory(&ofn,sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.hwndOwner = hwnd;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter = TEXT("Text document(*.txt*)\0*.txt\0Word 2016 document(*.docx*)\0*.docx\0All Files(*.*)\0*.*\0");
ofn.nFilterIndex = 1;
ofn.lpstrInitialDir = NULL;
ofn.lpstrFileTitle = NULL;
ofn.lpstrDefExt = "mp";
ofn.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;
GetSaveFileName(&ofn);
}
解决方法
GetSaveFileName
不保存文件。它显示一个对话框,允许用户选择文件名。如果返回成功,则程序必须编写代码以保存文件,使用用户提供的文件名,程序可以在 szFile
中读取该文件名。
在新程序中,您应该使用 common item dialogs(IFileOpenDialog
和 IFileSaveDialog
)而不是 GetOpenFileName
和 GetSaveFileName
。造成这种情况的原因有很多,但最明显的原因之一是您将不受文件名长度的限制。