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




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


    }

    else

      return FALSE;

  }

  else

    return FALSE;

  // Если исходный файл открыть не удалось,

  // возвращаем значение FALSE

  if(hSrcFile == INVALID_HANDLE_VALUE)

    return FALSE;

#if FILEOP == MEMORYMAPPED_IO

  // В том случае, когда используется отображение

  // файла на память, этот файл перекодируется

  // "по месту". Для этого используется функция

  // Oem2Char с одним параметром.

  Oem2Char(hSrcFile);

  CloseHandle(hSrcFile);

 

#elif FILEOP == SYNCHRONOUS_IO FILEOP == ASYNCHRONOUS_IO

 

  // При использовании синхронного или асинхронного

  // режима работы с файлами результат перекодировки

  // будет записан в новый файл. Поэтому в этом

  // случае мы открываем второй файл и используем

  // другой вариант функции Oem2Char - с двумя

  // параметрами

 

  ofn.lpstrTitle = szDlgTitleSave;

  ofn.Flags      = OFN_HIDEREADONLY;

 

  if(GetSaveFileName(&ofn))

  {

    // Если файл выбран, открываем его

    if (*ofn.lpstrFile)

    {

#if FILEOP == SYNCHRONOUS_IO

      // При использовании синхронных операций указываем

      // флаг FILE_FLAG_SEQUENTIAL_SCAN

      hDstFile = CreateFile(ofn.lpstrFile, GENERIC_WRITE,

        0, NULL, CREATE_ALWAYS,

        FILE_FLAG_SEQUENTIAL_SCAN, NULL);

#elif FILEOP == ASYNCHRONOUS_IO

      // При использовании асинхронных операций

      // необходимо указать флаг FILE_FLAG_OVERLAPPED

      hDstFile = CreateFile(ofn.lpstrFile, GENERIC_WRITE,

        0, NULL, CREATE_ALWAYS,

        FILE_FLAG_OVERLAPPED,  NULL);

#endif

   

    }

    else

      return FALSE;

  }

  else

    return FALSE;

  // Если выходной файл открыть не удалось,

  // возвращаем значение FALSE

  if(hDstFile == INVALID_HANDLE_VALUE)

    return FALSE;

  // Выполняем перекодировку файла hSrcFile с записью

  // результата перекодировки в файл hDstFile

  Oem2Char(hSrcFile, hDstFile);

  // После перекодировки закрываем оба файла




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