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


Листинг 4.3. Файл oem3ansi/oem3ansi.cpp - часть 4


Эти функции выбирают файлы с использованием шаблона, созданного нами на основе стандартного шаблона диалоговой панели "Open" и функций GetOpenFileName, GetSaveFileName.

После перекодировки выбранного файла (которая выполняется функцией Oem3Ansi), файлы закрываются, ресурс, содержащий таблицу перекодировки, расфиксируется и освобождается.

Так как диалоговые панели выбора входного и выходного файла отличаются только заголовком, для них мы создали только один шаблон. В файле ресурсов этот шаблон имеет имя "Open".

Перед тем, как вызвать функцию GetOpenFileName, предназначенную для выбора входного файла, мы должны подготовить соответствующим образом структуру ofn типа OPENFILENAME. В частности, для обеспечения возможности работы с шаблоном в поле Flags структуры ofn необходимо указать флаг OFN_ENABLETEMPLATE. В поле hInstance этой же структуры необходимо записать идентификатор копии приложения, ресурсы которого содержат шаблон, а в поле lpTemplateName нужно записать указатель на строку имени ресурса:

ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_ENABLETEMPLATE; ofn.hInstance = hInst; ofn.lpTemplateName = (LPSTR)"Open";

Функция GetDstFile инициализирует структуру ofn аналогичным образом. Единственное отличие заключается в том, что в поле lpstrTitle записывается адрес строки, содержащей заголовок "Выберите выходной файл":

ofn.Flags = OFN_HIDEREADONLY | OFN_ENABLETEMPLATE; ofn.hInstance = hInst; ofn.lpTemplateName = (LPSTR)"Open"; ofn.lpstrTitle = (LPSTR)"Выберите выходной файл";

Для перекодирования файла в приложении OEM3ANSI определена функция с именем Oem3Ansi.

Прежде всего эта функция определяет размер входного файла. Для этого она выполняет позиционирование на конец файла, используя функцию _llseek:

dwFileSize = _llseek(hfSrcFile, 0l, 2);

Эта функция возвращает текущее смещение в файле от начала файла. Так как мы установили текущую позицию н конец файла, текущее смещение от начала файла, очевидно, равно размеру файла.




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



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