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


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


Этот путь приложение передает функции _lopen, открывающей файл на чтение. Затем функция GetSrcFile возвращает идентификатор открытого файла (точнее, результат, полученный при попытке открыть файл).

При ошибке или отказе от выбора файла функция GetSrcFile возвращает нулевое значение.

Для выбора файла, в который будет записан результат перекодировки, функция WinMain вызывает функцию GetDstFile. Эта функция вызывает функцию GetSaveFileName, которая выводит стандартную диалоговую панель "Save As..." (рис. 5.7).

Рис. 5.7. Диалоговая панель "Save As..."

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

Функция GetSaveFileName описана в файле commdlg.h:

BOOL WINAPI GetSaveFileName(OPENFILENAME FAR* lpofn);

Она используется аналогично функции GetOpenFileName.

Вначале приложение подготавливает структуру OPENFILENAME:

szFile[0] = '\0'; memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = NULL; ofn.lpstrFilter = szFilter; ofn.nFilterIndex = 1; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFileTitle = szFileTitle; ofn.nMaxFileTitle = sizeof(szFileTitle); ofn.lpstrInitialDir = NULL; ofn.Flags = OFN_HIDEREADONLY;

При этом используется тот же фильтр, что и при поиске входного (перекодируемого) файла, но другое значение поля Flags.

Затем приложение вызывает функцию GetSaveFileName и проверяет возвращаемое ей значение:

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

Если выходной файл выбран правильно и не произошло никаких ошибок, приложение вызывает функцию _lcreat. Эта функция открывает на запись существующий файл или создает новый и затем также открывает его на запись.

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

Для перекодирования файла функция WinMain вызывает функцию Oem2Ansi.


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



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