CFileDialog обработка имени файла с точкой
От: megapixel  
Дата: 30.07.09 11:20
Оценка:
Добрый день,
Для записи файлов использую CFileDialog, но столкнулся с одной проблемой.
Имя файла 123.45.jpg а мне надо чтобы юзер выбрал 123.45.gif или 123.45.bmp
При создании диалога задаю дефолтное имя файла writeDialog.m_ofn.lpstrFile = "123.45"
Но слишком умный класс показывает имя только 123 а 45 считает расширением.
Соответственно какой-бы фильтр юзер не выбрал (gif или bmp) расширение всё-равно остаётся 45.

Решения:
1) После doModal проверять активный фильтр и менять расширения файла на нужное.
Минусы: юзер в диалоге видит имя 123 а запишется 123.45.gif не будет сообщения в случае если такой файл уже существует.
Отдельно проверять случай если юзер отредактировал имя файла в строке а не просто поменял фильтр.

2) Записывать в переменную writeDialog.m_ofn.lpstrFile = "123.45.jpg" но тогда при смене фильтра и попытке записи будет выдаваться сообщение что такой файл уже существует.
3) Записывать в переменную writeDialog.m_ofn.lpstrFile = "123.45.!use" в этом случае при смене фильтране проверяется существуеьт-ли файл 123.45.gif

Возможно кто-то уже нашёл решение этой проблемы, может надо какой-нибудь виртуальный метод переопределить.
Заранее спасибо.
mfc cfiledialog save extension
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.