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

         

Подготавливаем структуру для выбора исходного


  char szFilter[256] =

    "Text Files\0*.txt\0Any Files\0*.*\0";

  char szDlgTitle[] = "Select source file";

  char szDlgTitleSave[] = "Select destination file";

  // Подготавливаем структуру для выбора исходного файла

  memset(&ofn, 0, sizeof(OPENFILENAME));

  GetCurrentDirectory(sizeof(szDirName), szDirName);

  szFile[0] = '\0';

  ofn.lStructSize     = sizeof(OPENFILENAME);

  ofn.hwndOwner       = hwnd;

  ofn.lpstrFilter     = szFilter;

  ofn.lpstrInitialDir = szDirName;

  ofn.nFilterIndex    = 1;

  ofn.lpstrFile       = szFile;

  ofn.nMaxFile        = sizeof(szFile);

  ofn.lpstrFileTitle  = szFileTitle;

  ofn.nMaxFileTitle   = sizeof(szFileTitle);

  ofn.lpstrTitle      = szDlgTitle;

  ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST

    | OFN_HIDEREADONLY;

  // Выводим на экран диалоговую панель, предназначенную

  // для выбора исходного файла

  if(GetOpenFileName(&ofn))

  {

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

    if (*ofn.lpstrFile)

    {

#if FILEOP == SYNCHRONOUS_IO

     

      // В синхронном режиме указываем флаг

      // FILE_FLAG_SEQUENTIAL_SCAN

      hSrcFile = CreateFile(ofn.lpstrFile, GENERIC_READ,

        FILE_SHARE_READ, NULL, OPEN_EXISTING,

        FILE_FLAG_SEQUENTIAL_SCAN, NULL);

#elif FILEOP == ASYNCHRONOUS_IO

     

      // В асинхронном режиме необходимо указывать

      // флаг FILE_FLAG_OVERLAPPED

      hSrcFile = CreateFile(ofn.lpstrFile, GENERIC_READ,

        FILE_SHARE_READ, NULL, OPEN_EXISTING,

        FILE_FLAG_OVERLAPPED, NULL);

#elif FILEOP == MEMORYMAPPED_IO

      // В режиме отображения на память мы не используем

      // дополнительные флаги, однако указываем, что

      // файл будет открываться не только для чтения,

      // но и для записи

      hSrcFile = CreateFile(ofn.lpstrFile,

        GENERIC_READ | GENERIC_WRITE,

        0, NULL, OPEN_EXISTING,  0, NULL);

#endif


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