1

我使用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";

但是我怎样才能得到文件名S?如果我检查 szFileName 变量,它只包含文件夹名称。

4

1 回答 1

8

文档中

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

目录和文件名字符串以 NULL 分隔,最后一个文件名后有一个额外的 NULL 字符。

从你的问题:

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

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

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

于 2013-03-28T15:33:58.167 回答