我尝试使用谷歌搜索,但人们似乎也遇到了同样的问题:我们无法获得所选文件的列表。
这是一段简单的工作代码,类似于我使用的代码:
OPENFILENAME ofn = { sizeof ofn };
wchar_t file[1024];
file[0] = '\0';
ofn.lpstrFile = file;
ofn.nMaxFile = 1024;
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER;
GetOpenFileName(&ofn);
我实际上如何获得所选的文件名?目前,我只能在没有OFN_ALLOWMULTISELECT标志的情况下使用它,因此它将一个选定的文件名返回到
ofn.lpstrFile
中。我试图打印出该结构中的所有字符串变量,但未发现任何结果。它仅显示所选文件的主文件夹。 最佳答案
看来ofn.lpstrFile
包含所有文件名,以NULL分隔并以另一个NULL结尾(有效地以空字符串结尾)。
从MSDN。
解析内容的可能实现是:
wchar_t* str = ofn.lpstrFile;
std::wstring directory = str;
str += ( directory.length() + 1 );
while ( *str ) {
std::wstring filename = str;
str += ( filename.length() + 1 );
// use the filename, e.g. add it to a vector
}