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

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

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
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Алексей++
кот глобальный и пушистый
Глобальный модератор

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);
   }

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

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

ru
Offline Offline
Сообщений: 13


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

(комент)

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

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

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines