ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Использование класса CFileDialogПеременная m_ofn, содержится в объектах этого класса, представляет собой структуру типа OPENFILENAME, имеющую множество полей. Напр., дескриптор окна, владеющего блоком диалога, указатель на фильтры для выбора имён файлов и т.д.. Перед открытием окна некоторые компоненты этой структуры можно установить и/или изменить. (Самостоятельно посмотреть в справочнике OPENFILENAME, m_ofn) Первый параметр конструктора объекта класса CFileDialog определяет тип стандартного диалога: “File Open” или “File Save As”. Могут формироваться списки фильтров и т.д.. После создания объекта к нему применяется метод DoModal() и окно диалога появится на экране. Следующие методы позволяют получить информацию о выбранном имени файла: GetFileExt(), GetFileName(), GetPathName(), GetFileTitle(). Присутствуют метод, используемые при мультиселекции (выбор нескольких файлов) файлов: GetStartPosition(), GetNextPathName() и т.д.. Имеется и несколько обработчиков сообщений, которые используются для более гибкой подстройки класса CFileDialog под конкретное приложение: OnShareViolation() – при нарушении прав совместного доступа OnLBSelChangedNotify() – когда изменился выбор в поле списка и т.д.
CFileDialog fileDlg(TRUE);//создание объекта CString str("Все файлы (*.*)");//формирование шаблонов имён файлов str+=(TCHAR)NULL; str+="*.*"; str+=(TCHAR)NULL;
fileDlg.m_ofn.lpstrFilter = str;//установка фильтра //указываем список фильтров использующихся при открытии диалога fileDlg.m_ofn.nFilterIndex = 2;
TChar strName[_MAX_PATH];//буфер для полного имени файла strName[0] = (TCHAR)NULL; fileDlg.m_oft.lpstrFile = strName; fileDlg.m_ofn.lpstrTitle = title;//формируем заголовок диалога //выводим диалог на экран if (fileDlg.DoModal() == IDOK) { //вывод имени файла в заголовок текущего окна. CChildWnd *pWnd = (CChildWnd*)GetActiveFrame(); pWnd->SetWindowText(fileDlg.m_ofn.lpstrFile);
... } Параметры конструктора CFileDialog CFileDialog::CFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL, DWORD dwSize = 0); Параметры:1. TRUE – для диалога “File Open”, FALSE – для “File Save as…”2. расширение файла по умолчанию автоматически присоединяется, если пользователь не указал расширение в поле, где указывается имя файла.3. имя файла по умолчанию, в поле, где указывается имя файла в диалоговом окне.4. флаг, которые позволяют модифицировать диалоговое окно подходящим образом. Описание флагов в структуре OPENFILENAME. (по умолчанию – спрятать флажок ReadOnly, запрашивать подтверждение на перезапись файла)5. файловые фильтры – последовательности строковых пар, которые позволяют отобразить в диалоговом окне только файлы соответствующие фильтрам.6. ссылка на окно родитель (обычно не указывается, или указывается this – т.е. текущее окно из которого вызывается диалоговое окно). Пример с установкой фильтра В примере фрагмент метода, связанного с реализацией диалога выбора файлов для загрузчика. В диалоге может выполняться группа файлов:.......::OnFileLoad() – вызов из меню.CFileDialog fDlg(TRUE,NULL,NULL,OFN_LONGNAMES|OFN_ALLOWMULTISELECT| OFN_FILEMUSTEXIST|OFN_HIDEREADONLY| OFN_PATHMUSTEXIST);
fDlg.m_ofn.Flags&=~OFN_EXPLORER;//стиль окна Explorer fDlg.m_ofn.lpstrTitle = "File(s) to Load";//заголовок fDlg.m_ofn.lpstrFilter= "Programs(*.act;*.fst;*.txt)\0*.act;*.fst;*.txt; \0NotCompiled(*.act;*.txt)\0*.act;*.txt \0Fast(*.fst)\0*.fst\0\0";
char bufr[BUFR_SIZE] = "";//буфер для имени файла fDlg.m_ofn.lpstrFile = (LPTSTR)bufr; fDlg.m_ofn.lpstrDefExt= (LPTSTR)".act"; fDlg.m_ofn.nMaxFile = BUFR_SIZE;
if (fDlg.DoModal() == IDOK) { ... } } Указывается возможность длинных имён, мультиселекция, что флаг ReadOnly надо прятать, если файл не существует, то выводится предупреждение. Для диалога – стиль Explorer и окно “File Open”.
Не нашли, что искали? Воспользуйтесь поиском:
|