Главный файл исходных текстов приложения Oem2Char приведены в листинге 1.1.
Листинг 1.1. Файл oem2char/oem2char.c
// ==================================================
// Приложение OEM2CHAR
// Демонстрация использования файловых операций
// для перекодировки текстовых файлов
//
// (С) Фролов А.В., 1996
// Email: frolov@glas.apc.org
// ==================================================
#define STRICT
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include "resource.h"
#include "afxres.h"
// Различные режимы работы с файлами
#define SYNCHRONOUS_IO 1 // синхронные операции
#define ASYNCHRONOUS_IO 2 // асинхроные операции
#define MEMORYMAPPED_IO 3 // отображение на память
// Для использования различных режимов работы
// с файлами используйте только одну из
// приведенных ниже трех строк
//#define FILEOP SYNCHRONOUS_IO
//#define FILEOP ASYNCHRONOUS_IO
#define FILEOP MEMORYMAPPED_IO
#include "oem2char.h"
HINSTANCE hInst;
char szAppName[] = "Oem2CharApp";
char szAppTitle[] = "Text File Converter";
// Тип преобразования:
// OEM -> ANSI или ANSI -> OEM
BOOL fConversionType = OEM_TO_ANSI;
// Идентификатор файла, который будет
// перекодирован в соответствии с содержимым
// глобальной переменной fConversionType
HANDLE hSrcFile;
// Эти определения используются для всех способов
// работы с файлами, кроме отображения на память
#if FILEOP != MEMORYMAPPED_IO
// Идентификатор файла, в который будет записан
// результат перекодировки
HANDLE hDstFile;
// Буфер для работы с файлами
CHAR cBuf[2048];
#endif
// -----------------------------------------------------
// Функция WinMain
// -----------------------------------------------------
int APIENTRY
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)