C++ winapi openfiledialog c++;

C++ winapi openfiledialog c++;,c++,winapi,openfiledialog,C++,Winapi,Openfiledialog,我使用明文,C++ 我想打开多个文件,如下所示: OPENFILENAME ofn; ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hwnd; ofn.lpstrFilter = "TXT\0" "*.txt\0"; ofn.lpstrFile = szFileName; ofn.nMaxFile = MAX_PATH; ofn.Flags = OFN_EXPL

我使用明文,C++ 我想打开多个文件,如下所示:

OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(ofn));

ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd;
ofn.lpstrFilter = "TXT\0"
        "*.txt\0";
ofn.lpstrFile = szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT;
ofn.lpstrDefExt = "txt";
但是我怎样才能得到文件名呢?如果我选中szFileName变量,它只包含文件夹名。

来自:

如果用户选择了多个文件,
lpstrFile
缓冲区将返回当前目录的路径,后跟所选文件的文件名。
nFileOffset
成员是第一个文件名的偏移量,以字节或字符为单位

目录和文件名字符串是空分隔的,最后一个文件名后面有一个额外的空字符

根据你的问题:

如果我检查szFileName变量,它只包含文件夹名

继续检查一个字符是否超过终止的
'\0'

每次以下字符不是另一个
'\0'
,这就是新文件名的开始。

来自:

如果用户选择了多个文件,
lpstrFile
缓冲区将返回当前目录的路径,后跟所选文件的文件名。
nFileOffset
成员是第一个文件名的偏移量,以字节或字符为单位

目录和文件名字符串是空分隔的,最后一个文件名后面有一个额外的空字符

根据你的问题:

如果我检查szFileName变量,它只包含文件夹名

继续检查一个字符是否超过终止的
'\0'


每次下列字符不是另一个
'\0'
,这就是新文件名的开始。

FWIW,上面代码的前三行可以简单地写成
OPENFILENAME of n={sizeof(of n)}
Vague title不太可能对站点的未来访问者有用->太本地化了。FWIW,上面代码的前三行可以简单地写成
OPENFILENAME of n={sizeof(of n)}模糊的标题不太可能对网站的未来访问者有用->太本地化了。+1@Carl您将需要比目前260字符大得多的缓冲区。+1@Carl您将需要比目前260字符大得多的缓冲区。