Я использую 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, она содержит только имя папки.
От документация:
Если пользователь выбирает более одного файла,
lpstrFile
буфер возвращает путь к текущему каталогу, за которым следуют имена выбранных файлов.nFileOffset
member — это смещение в байтах или символах к первому имени файластроки каталога и имени файла разделяются NULL, с дополнительным символом NULL после последнего имени файла.
Из вашего вопроса:
Если я проверяю переменную szFileName, она содержит только имя папки.
Продолжайте проверять один символ после завершающего '\0'
,
Каждый раз следующий персонаж не другой '\0'
это начало нового имени файла.
Других решений пока нет …