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";

Но как я могу получить имя файла? Если я проверяю переменную szFileName, она содержит только имя папки.

1

Решение

От документация:

Если пользователь выбирает более одного файла, lpstrFile буфер возвращает путь к текущему каталогу, за которым следуют имена выбранных файлов. nFileOffset member — это смещение в байтах или символах к первому имени файла

строки каталога и имени файла разделяются NULL, с дополнительным символом NULL после последнего имени файла.

Из вашего вопроса:

Если я проверяю переменную szFileName, она содержит только имя папки.

Продолжайте проверять один символ после завершающего '\0',

Каждый раз следующий персонаж не другой '\0'это начало нового имени файла.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]