- •Дополнительная информация из интернета
- •Открытие файлов
- •Стандартные диалоговые панели для открытия файлов
- •NMaxCustFilter - Определяет размер буфера в байтах, указанного в поле lpstrCustomFilter. Размер этого буфера должен быть не меньше 40 байт.
- •Закрытие файлов
- •Создание файлов
- •Чтение и запись
- •Позиционирование
- •Определение типа устройства ввода/вывода
- •Использование стандартной библиотеки транслятора
Стандартные диалоговые панели для открытия файлов
В составе операционной системы 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 |
