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


Интерфейс IAutoComplete (shldisp.h)

Предоставляется объектом автозаполнения (CLSID_AutoComplete). Этот интерфейс позволяет приложениям инициализировать, включать и отключать объект .

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

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

Методы

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

 
IAutoComplete::Enable

Включает или отключает автозавершение.
IAutoComplete::Init

Инициализирует объект автозаполнения.

Комментарии

Автозавершение расширяет строки, которые были частично введены в элементе управления редактированием , в полные строки. Например, когда пользователь начинает вводить URL-адрес в элементе управления "Изменение адреса", внедренном на панели инструментов Windows Internet Обозреватель, автозавершение разворачивает строку на один или несколько полных URL-адресов, согласованных с существующей частичной строкой. Часть строки URL-адреса, например "mic", может быть расширена до "http://www.microsoft.com" или "http://www.microsoft.com/windows". Автозавершение обычно используется с элементами управления редактированием или с элементами управления, которые имеют внедренный элемент управления редактированием, например элемент управления со списком.

Автозавершение имеет два режима для отображения завершенной строки. Режимы являются независимыми, поэтому можно включить один или оба режима. Чтобы указать режим, вызовите метод IAutoComplete2::SetOptions. Ниже приведены режимы.

  • В режиме автозавершения автозавершение добавляет остаток наиболее вероятной строки кандидата к существующим символам, выделяя добавленные символы. Элемент управления редактированием ведет себя так, как если бы пользователь ввел всю строку вручную, а затем выделил добавленные символы. Если пользователь продолжает вводить символы, они добавляются в существующую частичную строку. Если пользователь добавляет символ, идентичный следующему выделенному символу, выделение для этого символа будет отключено. Остальные символы по-прежнему будут выделены. Если пользователь добавляет символ, который не соответствует следующему выделенному символу, автозавершение пытается создать новую строку-кандидат на основе более крупной частичной строки. Он добавляет оставшуюся часть новой строки-кандидата к текущей частичной строке, как и раньше. Если строка-кандидат не найдена, отображаются только введенные символы, а поле редактирования ведет себя так, как без автозаполнения. Этот процесс продолжается до тех пор, пока пользователь не примет строку.
  • В режиме автозаполнения автозаполнение отображает раскрывающийся список под элементом управления редактированием с одной или несколькими предлагаемыми полными строками. Пользователь может выбрать одну из предлагаемых строк, обычно щелкнув ее, или продолжить ввод. По мере ввода раскрывающийся список может быть изменен на основе текущей частичной строки. Если задать флаг ACO_SEARCH в параметре dwFlagобъекта IAutoComplete2::SetOptions, в нижнюю часть раскрывающегося списка будет добавлен элемент Search for 'XXX'. Он отображается, даже если предлагаемые строки отсутствуют. Для параметра "XXX" задается текущая частичная строка и обновляется по мере того, как пользователь продолжает вводить текст. Если пользователь выбирает "Поиск "...", приложение должно запустить поисковую систему, чтобы помочь пользователю.
Самый простой способ реализовать автозавершение — вызвать SHAutoComplete. При вызове этой функции для элемента управления изменением системы элемент управления будет автозавершение частично введенных путей или URL-адресов файловой системы. Чтобы включить автозаполнение для других типов строк или получить больший контроль над тем, как работает автозавершение, можно напрямую использовать базовый объект автозаполнения.

Этот интерфейс обычно не реализуется приложениями. Он предоставляется объектом автозаполнения оболочки и используется приложениями.

Используйте интерфейс IAutoComplete объекта автозаполнения для инициализации объекта, а также для включения или отключения автозаполнения.

Чтобы реализовать автозавершение для элемента управления редактированием с помощью объекта автозаполнения, выполните следующие действия.

  1. Реализация com-объекта строкового списка, который экспортирует интерфейс IEnumString . Этот объект списка строк отвечает за предоставление списка строк, которые объект автозаполнения будет использовать в качестве кандидатов для завершенных строк.
  2. Создайте экземпляр объекта автозаполнения с помощью CoCreateInstance. Запросите указатель на интерфейс IAutoComplete .
  3. Вызовите IAutoComplete::Init. Задайте для параметра hwndEdit дескриптор окна элемента управления редактированием. Если элемент управления редактированием внедрен в другой элемент управления, необходимо получить дескриптор самого элемента управления редактированием. Например, чтобы получить дескриптор для элемента управления редактированием, внедренного в элемент управления со списком, отправьте CBEM_GETEDITCONTROL сообщение. Задайте для параметра punkACLобъекта IAutoComplete::Init указатель IUnknown объекта списка строк.
  4. Если вы не хотите использовать параметры по умолчанию, получите указатель на интерфейс IAutoComplete2 объекта автозаполнения. Вызовите метод IAutoComplete2::SetOptions , чтобы задать нужные параметры.
  5. Объект автозаполнения использует указатель IUnknown объекта списка строк, переданный как punkACL на шаге 3, для получения указателя на интерфейс IEnumString этого объекта. Затем объект автозаполнения вызывает этот интерфейс для создания списка строк-кандидатов. Он выбирает строки из этого списка, которые являются приемлемым совпадением с частичной строкой в элементе управления . В режиме автоматического приложения символы, необходимые для завершения строки, добавляются к частичной строке и выделяются. В режиме автозаполнения под элементом управления редактированием отображается раскрывающийся список со списком из одной или нескольких возможных строк.
  6. Если пользователь принимает автозавершение строки, элемент управления редактированием будет вести себя так, как если бы строка была введена вручную.
Автозавершение включено по умолчанию. Приложения должны вызывать только IAutoComplete::Enable , чтобы отключить автозавершение или повторно включить его, если оно было отключено.

Требования

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

См. также раздел

IACList

IACList2

IAutoComplete2

ICurrentWorkingDirectory

IObjMgr