Фильтры

Сведения в этом разделе относится к Explorer стиль и старого стиля Открыть и Сохранить как диалоговые окна.

Вы можете предоставить имя файла фильтры для оказания помощи пользователю в ограничении имен файлов, который отображает диалоговое окно. Фильтр filename состоит из пары нулем строк, описания и узора, одна с другой. Отображает диалоговое окно описание, чтобы позволить пользователю выбрать какой фильтр использовать; и он использует шаблон для выбора файлов для отображения.

Чтобы задать фильтры, установите lpstrFilter член OPENFILENAME структуры на буфер, содержащий массив пар строк фильтра. Последняя строка в массиве должен следовать лишний символ null.

Строка шаблона может быть комбинацией символов допустимые имя файла и звездочка. Звездочка является подстановочным знаком, представляющий любую комбинацию символов, допустимое имя файла. Диалоговое окно отображает только те файлы, которые соответствуют шаблону. Чтобы задать несколько шаблонов для же описания, необходимо использовать точку с запятой (;) для разделения шаблонов. Обратите внимание, что пробелы в строке шаблона может привести к неожиданным результатам.

В следующем фрагменте кода определяет два фильтра. Фильтр с описанием «Источник» имеет две модели. Если пользователь выбирает фильтр, диалоговое окно отображает только файлы.C и.Расширения CXX.

OPENFILENAME ofn;       / / общее диалоговое окно поле структуры

ofn.lpstrFilter = "Source\0 *.C; *.CXX\0All\0*.*\0 "
ofn.nFilterIndex = 1 

Член nFilterIndex структуры OPENFILENAME определяет индекс, который показывает, какой фильтр диалогового окна изначально использует. Первый фильтр в буфере имеет индекс 1, второй 2 и так далее. Если пользователем изменения фильтра во время использования диалогового nFilterIndex члена имеет значение индекс выбранного фильтра на возвращение.

Настраиваемый фильтр можно создать, установив член lpstrCustomFilter на адрес буфера, содержащего один фильтр и путем установки nMaxCustFilter член размер буфера в символов или байтов. Диалогового окна всегда помещает пользовательский фильтр в начале списка фильтров и, по возвращении, всегда обновляет шаблон частью фильтра с узором из фильтра, выбранного пользователем.

Для диалоговых окон проводника стиль расширение по умолчанию может измениться, если пользователь выбирает другой фильтр. Если пользователь выбирает фильтр, чей первый шаблон имеет форму *.XXX (то есть, расширение не содержит символ-шаблон), диалоговое окно "" использует xxx как расширение по умолчанию. Это происходит, только если указан расширение по умолчанию в lpstrDefExt член OPENFILENAME структуры. Например, если пользователь выбирает "Source\0 *.C; *.CXX\0 "фильтр, расширение по умолчанию изменяется на «C». Однако если задан фильтр как "Source\0 *.C * \0 ", потому что расширение содержит подстановочный знак не изменит расширение по умолчанию.