winapi openfiledialog c ++

Car*_*ark 1 c++ winapi openfiledialog

我用mingw,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";
Run Code Online (Sandbox Code Playgroud)

但是我如何获得文件名?如果我检查szFileName变量,它只包含文件夹名称.

Dre*_*ann 8

文档:

如果用户选择多个文件,则lpstrFile缓冲区将返回当前目录的路径,后跟所选文件的文件名.所述nFileOffset构件的偏移字节数或字符,第一个文件名

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

从你的问题:

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

继续检查终止后的一个字符'\0'.

每次下面的字符不是另一个时'\0',这就是新文件名的开头.