Поделиться через


Интерфейс IACList (shlobj_core.h)

Предоставляет метод, который повышает эффективность автозаполнения , когда строки-кандидаты упорядочены в иерархию.

Наследование

Интерфейс IACList наследуется от интерфейса IUnknown . IACList также имеет следующие типы членов:

Методы

Интерфейс IACList содержит следующие методы.

 
IACList::Expand

Запрашивает, чтобы клиент автозаполнения создавал строки-кандидаты, связанные с указанным элементом в его пространстве имен.

Комментарии

Для автозаполнения обычно требуются следующие три компонента:

  • Клиент автозаполнения. Этот клиент представляет собой окно, например диалоговое окно, в котором размещается элемент управления редактированием.
  • Объект автозаполнения (CLSID_AutoComplete). Этот объект предоставляется системой и обрабатывает пользовательский интерфейс, синтаксический анализ и управление фоновыми потоками.
  • Объект списка автозаполнения. Этот объект отвечает за предоставление списков строк-кандидатов для объекта автозаполнения.
Простой объект списка автозаполнения должен экспортировать только IEnumString в дополнение к IUnknown. Когда пользователь вводит символы в поле ввода, объект автозаполнения вызывает интерфейс IEnumString объекта списка для перечисления списка строк, которые можно использовать для завершения частичной строки. Объект list поддерживает пространство имен и решает, какая из этих строк является релевантной.

Самый простой подход, который использует объект списка, — возвращать каждую строку в своем пространстве имен каждый раз, когда объект автозаполнения выполняет запрос. Описание реализации этого типа объекта списка см. в разделе IAutoComplete. Однако этот подход является практичным только в том случае, если пространство имен относительно невелико. При использовании большого количества строк объект списка должен ограничиваться небольшим подмножеством пространства имен.

Интерфейс IACList экспортируется объектами списка автозаполнения, чтобы помочь им выбрать разумное подмножество строк из иерархического пространства имен. При использовании большого пространства имен эта процедура значительно повышает эффективность автозаполнения. Основная процедура выглядит следующим образом:

  1. Объект автозаполнения вызывает интерфейс IEnumString объекта списка. Объект list возвращает имена элементов верхнего уровня в иерархии. Например, если пространство имен состоит из всех файлов и папок на диске C:, объект list возвращает полные пути к папкам и файлам, содержащимся в каталоге C:\.
  2. Пользователь продолжает вводить текст до тех пор, пока не войдет в разделитель. Символы "\" и "/" распознаются объектом автозаполнения как разделители.
  3. Объект автозаполнения вызывает метод IACList::Expand объекта списка и передает ему текущую частичную строку.
  4. Объект автозаполнения снова вызывает интерфейс IEnumString объекта списка, чтобы запросить новый список строк. Если частичная строка соответствует одному из элементов верхнего уровня в пространстве имен, объект list возвращает имена элементов, которые сразу же попадают под выбранный элемент. Например, если пользователь ввел "C:\Program Files\", объект list возвращает имена файлов и папок, содержащихся в этом каталоге. Если имя, переданное в IACList::Expand , не соответствует ни одному элементу верхнего уровня, объект списка может просто прекратить возврат строк, пока объект автозаполнения не вызовет IACList::Expand со строкой, которая находится в пространстве имен объекта списка.
  5. Процесс продолжается до тех пор, пока пользователь не выберет строку, обычно нажимая клавишу ВВОД .

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional, Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header shlobj_core.h