Операционная система Microsoft Windows 3.1 для программиста -том 1


Приложение OEM2ANSI - часть 6


В нашем приложении эта возможность не используется, поэтому по адресу szFile мы расположили пустую строку, состоящую из одного нуля:

szFile[0] = '\0';

Поле nMaxFile должно содержать размер буфера, расположенного по адресу, указанному в поле lpstrFile:

ofn.nMaxFile = sizeof(szFile);

Размер этого буфера должен быть достаточным для записи полного пути к файлу. Файловая система MS-DOS допускает использование для указания пути к файлу не более 128 символов.

В поле lpstrFileTitle необходимо записать адрес буфера, в который после выбора будет записано имя файла с расширением, но без пути к файлу:

ofn.lpstrFileTitle = szFileTitle;

Это поле должно быть использовано приложением для отображения имени выбранного файла.

Поле nMaxFileTitle должно содержать размер указанного выше буфера:

ofn.nMaxFileTitle = sizeof(szFileTitle);

Поле lpstrInitialDir позволяет указать начальный каталог, который будет выбран для поиска файла сразу после отображения диалоговой панели "Open". Наше приложение начинает поиск в текущем каталоге, поэтому в это поле мы записали значение NULL:

ofn.lpstrInitialDir = NULL;

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

ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;

Флаг OFN_PATHMUSTEXIST указывает, что можно выбирать только такие пути, которые соответствуют существующим каталогам. Аналогично флаг OFN_FILEMUSTEXIST определяет, что при выборе можно указывать только существующие файлы. Флаг OFN_HIDEREADONLY убирает из диалоговой панели переключатель, позволяющий открыть файл в режиме "только чтение" (мы не пользуемся этим режимом, так как не собираемся изменять открываемый файл).

После подготовки структуры мы вызываем функцию GetOpenFileName и проверяем возвращаемое ей значение:

if (GetOpenFileName(&ofn)) { hf = _lopen(ofn.lpstrFile, OF_READ); return hf; } else return 0;

Если возвращаемое функцией GetOpenFileName значение отлично от нуля, поле lpstrFile содержит путь к выбранному файлу.


Начало  Назад  Вперед



Книжный магазин