Прежде всего перед вызовом функции
Прежде всего перед вызовом функции GetOpenFileName наше приложение записывает во все поля структуры нулевые значения:
memset(&ofn, 0, sizeof(OPENFILENAME));
Затем в поле lStructSize записывается размер самой структуры в байтах:
ofn.lStructSize = sizeof(OPENFILENAME);
Поле hwndOwner должно содержать идентификатор окна, создавшего диалоговую панель. Так как наше приложение не создает ни одного окна, в качестве идентификатора используется значение NULL, при этом диалоговая панель не имеет окна-владельца (похожим образом мы поступали при вызове функции MessageBox):
ofn.hwndOwner = NULL;
В поле lpstrFilter должен быть указан адрес текстовой строки, задающей фильтр для выбора имен файлов (шаблоны имен файлов):
ofn.lpstrFilter = szFilter;
Наше приложение использует в качестве фильтра такую строку:
char szFilter[256] = "Text Files\0*.txt;*.doc\0Any Files\0*.*\0";
Согласно описанию структуры OPENFILENAME фильтр должен состоять из одной или нескольких расположенных непосредственно друг за другом пар текстовых строк, закрытых двоичным нулем. Последняя строка должна иметь на конце два двоичных нуля.
Первая строка в паре строк описывает название фильтра, например "Text Files" (текстовые файлы), во второй строке пары через символ ";" перечисляются возможные шаблоны для имен файлов.
В нашем приложении определены две пары строк. Одна из них предназначена для выбора только текстовых файлов с расширениями имени *.txt и *.doc, вторая - для выбора любых файлов (с любым расширением имени).
Поле nFilterIndex определяет номер пары строк, используемой для фильтра. В нашем случае этот номер задается как 1, поэтому из двух фильтров выбирается первый, предназначенный для поиска текстовых файлов:
ofn.nFilterIndex = 1;
Поле lpstrFile должно содержать адрес текстовой строки, в которую будет записан полный путь к выбранному файлу:
ofn.lpstrFile = szFile;
Если по указанному выше адресу перед вызовом функции GetOpenFileName расположить текстовую строку, содержащую путь к файлу, этот путь будет выбран по умолчанию сразу после отображения диалоговой панели "Open".
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий