4.16 - Диалоговые окна Открыть (Open) и Сохранить как (Save As)

Диалоговое окно Открыть (Open) позволяет пользователю, определить диск, каталог и имя файла или набора файлов, которые надо открыть. Вы создаете и показываете диалоговое окно Открыть (Open), инициализируя структуру OPENFILENAME и передавая структуру в функцию GetOpenFileName.

Диалоговое окно Сохранить как (Save As) позволяет пользователю, определить диск, каталог и имя файла, которые надо сохранить. Вы создаете и показываете диалоговое окно Save As, инициализируя структуру OPENFILENAME и передавая структуру в функцию GetSaveFileName.

Начиная с Windows 95 и Windows NT версии 4.0, имеется новая версия диалоговых окон Открыть (Open) и Сохранить как (Save As), которые обеспечивают функции интерфейса пользователя, являясь сходными с Проводником Windows. Однако, Win32 продолжает поддерживать диалоговые окна Открыть(Open) и Сохранить как (Save As) старого стиля для прикладных программ, которые должны поддерживать интерфейс пользователя, не противоречащий более ранними версиями Windows.

В дополнение к различиям во внешнем виде, диалоговые окна старого стиля и в стиле Проводника отличаются в своем использовании пользовательских шаблонов и фильтр (hook) - процедур для настройки диалоговых окон. Однако, блоки диалога в стиле Проводника и старом стиле в наиболее базисных действиях, таких как определение фильтра имени файла, проверка правильности ввода пользователем и получение имени файла, определяемого пользователем, имеют одинаковое поведение. Для получения дополнительной информации о диалоговых окнах в стиле Проводника и старого стиля, см. Настройка диалоговых окон Открыть и Сохраните Как.

Иллюстрация ниже показывает типичное диалоговое окно Открыть (Open) в стиле Проводника.

19_1.gif (12491 b)

Иллюстрация ниже показывает типичное диалоговое окно Сохранить как (Save As) в стиле Проводника.

19_2.gif (7923 b)

Если пользователь определяет имя файла и щелкает мышью по кнопке OK, функция GetOpenFileName или GetSaveFileName возвращает значение ИСТИНА (TRUE). Буфер, указанный элементом lpstrFile структуры OPENFILENAME содержит полный путь и имя файла, определенное пользователем.

Если пользователь отменяет диалоговое окно Открыть (Open) или Сохранить как (Save As), или происходит ошибка, функция возвращает значение ЛОЖЬ (FALSE). Чтобы определять причину ошибки, вызовите функцию CommDlgExtendedError, чтобы извлечь расширенное значение ошибки. Если буфер lpstrFile слишком маленький, чтобы принять полное имя, CommDlgExtendedError возвращает FNERR_BUFFERTOOSMALL и первые 2 байта буфера, указанного элементом lpstrFile, приведенные к целочисленному значению, устанавливающему размер, требуемый, чтобы принять полное имя файла.

Диалоговые окна стиля Проводника доступны только 32-разрядным прикладным программам. 16-разрядные прикладные программы не могут использовать переключение (thunking), чтобы показать диалоговое окно в стиле Проводника.

Windows 95: 32-разрядные прикладные программы, которые используют диалоговые окна старого стиля, делают это, используя "переходник" (thunk). Это означает, что любой указатель, переданный вашей фильтр (hook) - процедуре - не устойчивая копия данных. Например, указатель OPENFILENAME, переданный в сообщении WM_INITDIALOG - не указывает на буфер, который вы первоначально определили. Если вы должны передать частные данные вашей фильтр (hook) - процедуре, отошлите ее в структуру и сохраните указатель на структуру в элементе lCustData структуры OPENFILENAME.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Владимир Соковиков - 17.03.2002