Відкриття файлу

У цьому розділі описано приклад коду, що відображення в діалоговому вікні Відкрити , що може вказати користувач, диск, папку та ім'я файлу для відкриття. Приклади коду першу ініціалізує структуру OPENFILENAME а потім викликає функцію GetOpenFileName , щоб відобразити діалогове вікно.

У цьому прикладі член lpstrFilter точок в буфер, який визначає два фільтри ім'я файлу, які можна вибрати для обмеження імен, які відображаються. Буфер містить подвійний null припинено масиву рядків, в яких кожну пару рядків вказує фільтр. Член nFilterIndex визначає, що перша модель використовується діалогове вікно створюється.

У цьому прикладі вибирає OFN_PATHMUSTEXIST і OFN_FILEMUSTEXIST прапори прапори члена. Ці прапори викликати діалогове вікно для перевірки, перш ніж повернутися, що шлях та ім'я файлу, вказані користувачем насправді існує.

Функція GetOpenFileName повертає TRUE, якщо натиснути кнопку " OK ", і існує вказаний шлях та ім'я файлу. У цьому випадку, буфер, вказав на lpstrFile член містить шлях та ім'я файлу. Приклади коду використовує цю інформацію в call для на CreateFile функції для відкриття файлу.

Хоча цей приклад не встановлено позначку OFN_EXPLORER, все ще відображається за промовчанням Explorer стиль діалогового вікна відкритими . Однак, якщо ви хочете, щоб забезпечити гачок процедури або настроюваний шаблон, і ви хочете Explorer інтерфейс користувача, ви повинні встановити прапор OFN_EXPLORER.

OPENFILENAME ofn;       / / Загальні діалоговому вікні структури
CHAR szFile [260];       / / буфер для імені файлу
HWND hwnd;              / / Власник вікно
ДЕСКРИПТОР ВЧ;              / / дескриптор файлу

/ / Ініціалізація OPENFILENAME
ZeroMemory (amp; ofn, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0 ";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Прапори = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;

/ / Відобразити діалогове вікно відкриття. 

Якщо (GetOpenFileName(&ofn) = = TRUE) ВЧ = CreateFile (ofn.lpstrFile, GENERIC_READ,
        0, NULL (LPSECURITY_ATTRIBUTES),
        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
        (РУЧКА) NULL) 

Index