【发布时间】:2020-07-18 08:54:41
【问题描述】:
我有一个在 VS2005 上编写的 C++ 代码,它工作得很好,过了一段时间我将项目升级到 VS2013 没有问题,一切都按预期编译和工作。
最近我将我的一台计算机升级到 VS2019 并尝试在那里检查我的一个旧程序,代码没有编译并抛出了一堆与从 const char* 转换为 LPCWSTR 相关的错误。
函数调用:
std::string inputFile, cwd;
cwd = getCWD();
flag = openMultipleFileDialog("Select a valid CSV file.", "CSV Files (*.csv)\0*.csv\0\0", cwd, inputFile);
函数定义:
int openMultipleFileDialog(std::string title, char* filter, std::string cwd, std::string& fileName)
{
int ofnFlag;
char buffer[4096];
OPENFILENAME ofn = {0};
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFilter = filter;
ofn.lpstrFile = buffer;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(buffer);
ofn.lpstrTitle = title.c_str();
ofn.lpstrInitialDir = cwd.c_str();
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
//ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER | OFN_ALLOWMULTISELECT;
ofnFlag = GetOpenFileName(&ofn);
fileName = buffer;
return ofnFlag;
}
我将更新帖子以添加 VS2019 错误
我想知道为什么会发生这种情况,也许有什么东西在我的视线之外飞驰而过,VS 升级带来的变化比我预期的要多得多。
【问题讨论】:
-
GetOpenFileName 之前好像在映射 GetOpenFileNameA,现在正在映射 GetOpenFileNameW
标签: c++ visual-studio visual-c++