Я пытаюсь применить фильтры расширения файла к диалоговому окну файла.Winapi GetOpenFileName Extension Filter не работает
Этот способ работает:
ofn.lpstrFilter =
"(*.exe) Windows Executable\0*.exe\0"
"(*.ini) Windows Initialization file \0*.ini\0"
"(*.dll) Dynamic Link Library \0*.dll\0"
"(*.lib) Windows Library file \0*.lib\0"
"(*.conf) Windows Configuration file \0*.conf\0";
Но когда я задаю расширения фильтры динамически, с помощью параметров, это не удается, фильтры не появляются в поле со списком:
LPCSTR filter = (LPCSTR)extFilter; //Contains string "bmp"
stringstream s;
s << "(*.exe) Windows Executable\0" << "*." << filter << "\0";
string ffilter = s.str();
ofn.lpstrFilter = ffilter.c_str();
Я принимаю Проблема заключается в преобразовании строк, но не может понять это.
Не тестировался, я предположим, что разделитель '' \ 0'' может нанести вред 'stringstream'. Если да, то как насчет использования другого символа, такого как '$' как разделителя, и после завершения построения фильтра скопируйте строку в массив 'char' и преобразуйте' '' '' в '' \ 0''? – MikeCAT
Пробовали ли вы смотреть на 'ffilter' в отладчике, чтобы увидеть, что он содержит? –
Любые новости здесь? Люди ждут ... :) –