Программирование для Windows NT (том 2)




Исходные тексты приложения - часть 10


void Oem2Char(HANDLE hSrcFile)

{

  DWORD dwFileSize;

  HANDLE hFileMapping;

  LPVOID lpFileMap;

  // Получаем и сохраняем размер файла

  dwFileSize = GetFileSize(hSrcFile, NULL);

  // Создаем объект-отображение для исходного файла

  hFileMapping = CreateFileMapping(hSrcFile,

    NULL, PAGE_READWRITE, 0, dwFileSize, NULL);

  // Если создать не удалось, возвращаем управление

  if(hFileMapping == NULL)

    return;

  // Выполняем отображение файла на память.

  // В переменную lpFileMap будет записан указатель на

  // отображаемую область памяти

  lpFileMap = MapViewOfFile(hFileMapping,

    FILE_MAP_WRITE, 0, 0, 0);

  // Если выполнить отображение не удалось,

  // возвращаем управление

  if(lpFileMap == 0)

    return;

   

  // Выполняем преобразование файла за один прием

  if(fConversionType == OEM_TO_ANSI)

    OemToCharBuff(lpFileMap, lpFileMap, dwFileSize);

   

  else if(fConversionType == ANSI_TO_OEM)

    CharToOemBuff(lpFileMap, lpFileMap, dwFileSize);

  // Отменяем отображение файла

  UnmapViewOfFile(lpFileMap);

  // Освобождаем идентификатор созданного

  // объекта-отображения

  CloseHandle(hFileMapping);

}

#endif

В листинге 1.2 приведен файл oem2char.h, в котором находятся определения и прототипы функций.

Листинг 1.2. Файл oem2char/oem2char.h

// Режимы перекодировки

#define OEM_TO_ANSI 1

#define ANSI_TO_OEM 2

// -----------------------------------------------------

// Описание функций

// -----------------------------------------------------

LRESULT WINAPI

WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

void WndProc_OnCommand(HWND hWnd, int id,

  HWND hwndCtl, UINT codeNotify);

void WndProc_OnDestroy(HWND hWnd);

LRESULT WINAPI

DlgProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);

BOOL DlgProc_OnInitDialog(HWND hwnd, HWND hwndFocus,

                          LPARAM lParam);




Содержание  Назад  Вперед