Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСиС.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
106.71 Кб
Скачать

Стандартные диалоговые панели для открытия файлов

В составе операционной системы Windows имеется DLL-библиотека commdlg.dll, экспортирующая среди прочих две функции, очень удобные для организации пользовательского интерфейса при открытии файлов. Это функции GetOpenFileName и GetSaveFileName . Мы уже пользовались этими функциями в приложениях OEM2ANSI и OEM3ANSI.

Функция GetOpenFileName выводит на экран стандартную или измененную приложением диалоговую панель "Open", позволяющую выбрать файл.

Функция GetSaveFileName выводит стандартную или измененную приложением диалоговую панель "Save As...".

Внешний вид этих диалоговых панелей определяется структурой типа OPENFILENAME , определенной в файле commdlg.h:

typedef struct tagOFN

{

DWORD lStructSize;

HWND hwndOwner;

HINSTANCE hInstance;

LPCSTR lpstrFilter;

LPSTR lpstrCustomFilter;

DWORD nMaxCustFilter;

DWORD nFilterIndex;

LPSTR lpstrFile;

DWORD nMaxFile;

LPSTR lpstrFileTitle;

DWORD nMaxFileTitle;

LPCSTR lpstrInitialDir;

LPCSTR lpstrTitle;

DWORD Flags;

UINT nFileOffset;

UINT nFileExtension;

LPCSTR lpstrDefExt;

LPARAM lCustData;

UINT (CALLBACK *lpfnHook)(HWND, UINT, WPARAM, LPARAM);

LPCSTR lpTemplateName;

} OPENFILENAME;

АдресструктурыпередаетсяфункциямGetOpenFileNameиGetSaveFileNameвкачествепараметраlpofn:

BOOL WINAPI GetOpenFileName(OPENFILENAME FAR* lpofn);

BOOL WINAPI GetSaveFileName(OPENFILENAME FAR* lpofn);

Обе функции возвращают ненулевое значение, если пользователь сделал выбор файла, и ноль, если он отказался от выбора, нажав кнопку "Cancel" или выбрав строку "Close" из системного меню диалоговой панели. Нулевое значение возвращается также при возникновении ошибки.

В результате выбора некоторые поля структуры будут заполнены информацией о выбранном файле.

Опишем назначение отдельных полей структуры OPENFILENAME.

  • Поле lStructSize перед вызовом функций должно содержать размер структуры OPENFILENAME в байтах.

  • Flags

Поле Flags позволяет задать различные режимы выбора файла, влияющие на внешний вид диалоговой панели. Приведем список флагов, комбинации которых можно использовать для заполнения этого поля.

Флаг

Описание

OFN_ALLOWMULTISELECT

Разрешается выбор нескольких файлов одновременно. Если указан этот флаг, после выбора поле lpstrFile будет указывать на буфер, заполненный именами выбранных файлов (или путями к выбранным файлам), разделенными пробелом

OFN_CREATEPROMPT

При использовании этого флага если указанный файл не существует, создается диалоговая панель, в которой предлагается создать файл. Этот флаг устанавливается автоматически при использовании флагов OFN_PATHMUSTEXIST и OFN_FILEMUSTEXIST

OFN_ENABLEHOOK

Разрешается использовать функцию фильтра, адрес которой указан в поле lpfnHook

OFN_ENABLETEMPLATE

Если указан этот флаг, для создания диалоговой панели Windows будет использовать шаблон, определяемый содержимым полей hInstance и lpTemplateName

OFN_ENABLETEMPLATEHANDLE

При использовании этого флага поле hInstance используется для идентификации блока памяти, содержащий предварительно загруженный шаблон диалоговой панели. В этом случае содержимое поля lpTemplateName игнорируется

OFN_EXTENSIONDIFFERENT

Устанавливается после возвращения из функции и указывает, что расширение возвращенного имени файла отличается от заданного в поле lpstrDefExt. Этот флаг не устанавливается, если перед вызовом функции в поле lpstrDefExt было записано значение NULL, или если файл не имеет расширения имени

OFN_FILEMUSTEXIST

Можно выбирать только имена тех файлов, которые существуют. Если в поле "File Name" диалоговой панели набрать имя несуществующего файла, на экране появится диалоговая панель с предупреждающим сообщением

OFN_HIDEREADONLY

Убрать переключатель "Read Only"

OFN_NOCHANGEDIR

Для выбора используется каталог, который был текущим при вызове функции

OFN_NOREADONLYRETURN

Выбранные файлы не могут иметь атрибут "только чтение" или располагаться в защищенном от записи каталоге

OFN_NOTESTFILECREATE

Перед завершением работы диалоговой панели создание файла не выполняется. Не выполняются и проверки на переполнение диска, защиту записи или наличие доступа в сети

OFN_NOVALIDATE

В возвращаемом имени файла могут присутствовать неразрешенные символы

OFN_OVERWRITEPROMPT

Используется для диалоговой панели "Save As...". Если выбранный файл существует, на экран выводится диалоговая панель с предупреждением

OFN_PATHMUSTEXIST

Можно вводить только существующие пути к файлам

OFN_READONLY

После вызова функции переключатель "Read Only" будет находиться во включенном состоянии

OFN_SHAREWARE

Флаг устанавливается после возвращения из функции и указывает, что при вызове функции OpenFile произошла ошибка при совместном доступе к файлу в сети

OFN_SHOWHELP

Если указан этот флаг, в диалоговой панели будет создана кнопка "Help". Если указан этот флаг, поле hwndOwner не должно содержать значение NULL

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]