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


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


Функция GetDstFile открывает имеющийся файл (если для записи результата перекодировки выбран уже существующий файл) или создает и открывает новый.

После того как входной и выходной файлы открыты, вызывается функция Oem2Ansi, которая также определена в нашем приложении. Эта функция выполняет поблочное чтение входного файла, перекодировку прочитанных блоков в набор ANSI и запись результата перекодировки в выходной файл.

В заключение функция WinMain закрывает оба файла, вызывая функцию _lclose из программного интерфейса Windows.

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

Рис. 5.6. Диалоговая панель "Open"

Внешний вид этой диалоговой панели определяется структурой типа OPENFILENAME, определенной в файле commdlg.h (этот файл находится в каталоге include системы разработки Borland C++ или Microsoft Visual C++):

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 в качестве параметра lpfn:

BOOL WINAPI GetOpenFileName(OPENFILENAME FAR* lpofn);

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

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

Так как функциям, определенным в библиотеке commdlg.dll, будет посвящена отдельная глава, мы рассмотрим назначение только тех полей структуры OPENFILENAME, которые используются в нашем приложении OEM2ANSI.




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



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