在此示例中,它可以编译为可工作的代码,但是如果我在它周围放上更复杂的东西,则程序将关闭,无法打开对话框窗口。错误消息是:
#include <windows.h>
int main() {
OPENFILENAMEW ofn;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile = L"file name";
}
最佳答案
您需要为Windows填充缓冲区。
基本上,Windows在打开/保存对话框中选择文件后,将使用所选文件的路径和文件名填充缓冲区。因此,基本上,您的代码应如下所示:
#include <windows.h>
int main()
{
wchar_t fileBuffer[MAX_PATH] = {0};
OPENFILENAMEW ofn;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile = fileBuffer;
}
我希望这有帮助。
关于c++ - 在OPENFILENAMEW结构中填充lpstrFile时,不建议从字符串常量转换为LPWSTR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14402617/