Получить открытое имя файла убивает ifstream

У меня проблема с GetOpenFileName.
Перед вызовом метода GetOpenFileName работает WriteData.
У WriteData есть простая процедура проверки файлов:

ifstream inFile(FileName.c_str());
if (!inFile.is_open()) return false;

оф дамп:
свалка
И после вызова GetOpenFileName его всегда ложно. Но перед вызовом GetOpenFileName все работает нормально.

while (!lang->LoadLang(config->getLanguagePath()))
{
OPENFILENAME ofn = {0};
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = config->getLanguagePath();
ofn.lpstrFile[0] = '\0';
ofn.lpstrTitle = "Select the language file";
ofn.nMaxFile = 255;
ofn.lpstrFilter = "Language file\0*.lng\0";
ofn.nFilterIndex = 1;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn) == 0) return 0;
config->WriteData(KEY_LANG, ofn.lpstrFile);
}

0

Решение

Задача решена. Я попытался использовать функцию WinAPI OpenFile, чтобы открыть файл, и получил код ошибки 2 (файл не найден).
И теперь я исправил это.

char buffer[255];
GetCurrentDirectoryA(255, buffer);
OPENFILENAME ofn = {0};
ofn.hInstance = hInstance;
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.lpstrFile = config->getLanguagePath();
ofn.lpstrFile[0] = '\0';
ofn.lpstrTitle = "Select the language file";
ofn.nMaxFile = 255;
ofn.lpstrFilter = "Language file\0*.lng\0";
ofn.nFilterIndex = 1;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
if (GetOpenFileName(&ofn) == 0) return 0;
SetCurrentDirectory(buffer);
config->WriteData(KEY_LANG, ofn.lpstrFile);
0

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

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

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