Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Приглашаем принять участие в работе над нашей Wiki.
  • Наша рассылка: subscribe.ru, content.mail.ru и Google groups.
  • Есть желающие вести новостную ленту "В мире технологий"?
  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
   Начало   Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: (ст)CFileDialog  (Прочитано 5157 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Алексей1153++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Златоуст, Россия Сообщений: 13


« : 04-11-2004 20:33 » 

Какое-то биде с классом CFileDialog !!! Никак не могу понять - в дебаге он работает, а в релизе нормально работает ТОЛЬКО в конструкторе , в других местах программы вызывает тихое вылетание на раб стол без всяких предупреждений. Или же окно откроется, но после закрытия (даже просто кэнселом) вызывает глюк (уже видимый - окно о недопустимой) и вылет.

вот такое:

CFileDialog dd(TRUE);
dd.DoModal();

(всякие параметры в m_ofn роли не играют, я пробовал и с ними , та же фигня. Хотя класс вроде и вхолостую должен работать)

Посоветуйте:
1) что делать, если кто встречался и победил
2) посоветуйте альтернативный вариант (нужен поиск файлов на диске)
« Последнее редактирование: 01-05-2007 09:40 от Алексей1153++ » Записан

GlukSoft
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 05-11-2004 05:27 » 

Алексей1153, с подобными глюками не встречался, но очень похоже, что ты что-то все таки не инициализируешь правильно, иначе бы летело и в дебаге и в релизе.
У меня например следующий код работает, на всех операционках без проблем
Код:
CFileDialog Dlg(true);
CString     Title("Загрузка спектров"), Filter("Файлы спектров (*.spc)"), FileName;
Filter += '\0';
Filter += "*.spc";
Filter += '\0';
Filter += "Все файлы (*.*)";
Filter += '\0';
Filter += "*.*";
Filter += '\0';
Dlg.m_ofn.lpstrFilter = Filter;
Dlg.m_ofn.lpstrTitle = Title;
Dlg.m_ofn.Flags &= ~OFN_EXPLORER;
if (Dlg.DoModal() == IDOK)
{
Если нужен поиск файлов на диске, то пользоваться надо другими функциями - FindFirstFile и FindNextFile
Код:
...
CString csCurrent;
WIN32_FIND_DATA FindFileData;
HANDLE          hFile;
...
SetCurrentDirectory("D:\\Work\\");
hFile = FindFirstFile("*.*", &FindFileData);
if (hFile != INVALID_HANDLE_VALUE)
{
do
{
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
csCurrent = FindFileData.cFileName;
if (csCurrent != "." && csCurrent != "..")
{
...
}
}
} while (FindNextFile(hFile, &FindFileData));
...
}
« Последнее редактирование: 02-12-2007 17:24 от Алексей1153++ » Записан

Fatal error C1: Brain expected
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 13-11-2004 18:19 » 

Ближе к телу!

Код:
//  неплохо сохрнять, но не обязательно
CString stLastPath = AfxGetApp()->GetProfileString(_T("App"),_T("LastProjectPath"));

static TCHAR BASED_CODE szFilter[] = _T("TXT File (*.txt)|*.txt||");

CFileDialog dlgOpen(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);
dlgOpen.m_ofn.lpstrTitle = _T("Open Text File");

if (!stLastPath.IsEmpty())
{
dlgOpen.m_ofn.lpstrInitialDir = stLastPath;
}

if (dlgOpen.DoModal() == IDOK)
{
CString stFileName = dlgOpen.GetPathName();
//дальше что хочешь
}
« Последнее редактирование: 02-12-2007 17:25 от Алексей1153++ » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.

"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
Алексей1153++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Златоуст, Россия Сообщений: 13


« Ответ #3 : 13-11-2004 21:58 » 

Джон появился Улыбаюсь УРА!!!

только я так сделал

   CFileDialog dlg(TRUE);
   dlg.m_ofn.lpstrFilter="файл базы данных GBD\0*.gdb\0все файлы\0*.*\0\0";
   dlg.m_ofn.nFilterIndex=1;
   dlg.m_ofn.lpstrInitialDir=def_dbasePath_ondefault;
   dlg.m_ofn.lpstrTitle="Выбор файла базы данных";

   if(dlg.DoModal()==1)
   {
      m_edEnterDbaseFullName=dlg.m_ofn.lpstrFile;
      UpdateData(FALSE);
   }

всё работает
Записан

Алексей1153++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Златоуст, Россия Сообщений: 13


« Ответ #4 : 16-04-2006 20:21 » 

(комент)

статья
 по юзанью стандартных диалогов?  CFileDialog, CFondDialog и иже с ними
« Последнее редактирование: 01-05-2007 09:40 от Алексей1153++ » Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines