пользовательский combobox win32

#c #winapi #combobox #subclass #autosuggest

#c #winapi #выпадающий список #подкласс #автоматическое предложение

Вопрос:

Я пытаюсь реализовать функцию автоматического предложения в выпадающем списке win32 (C ). Я хочу добиться поведения, аналогичного функции автоматического предложения Google. Когда пользователь вводит что-либо в элемент управления редактированием выпадающего списка, его список открывается и показывает все возможные совпадения. Проблема в том, что поведение по умолчанию в combobox win32 заключается в том, чтобы всегда выбирать наиболее близкое совпадение и помещать полный текст (выделенный) в элемент управления редактированием при открытии списка. Мне нужно избегать такого поведения. Список должен просто открыться — не выбирайте что-либо и не меняйте текст в элементе управления редактированием! Я попытался подклассировать combobox и перехватить сообщение CBN_DROPDOWN, но это ничего не меняет в поведении по умолчанию.

У кого-нибудь есть еще идея? Мне не нужна функция автозаполнения, которая просто завершает текст в элементе управления редактированием, не открывая список.

Заранее приветствую, Майкл

Комментарии:

1. Вы можете использовать объект автозаполнения в режиме самовнушения. msdn.microsoft.com/en-us/library/windows/desktop /…

2. Да, это должно сработать. Но его довольно сложно реализовать для пользовательских источников автозаполнения — у меня есть список строк, которые будут использоваться, а не предопределенные файлы / URL. У кого-нибудь есть пример кода для этого?

3. Вам просто нужно передать ему строку IEnumString, которая выдает строки, которые вы хотите использовать. В ATL есть готовый перечислитель, который вы можете использовать.

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

5. Работает ли IAutoComplete только для элементов управления редактированием ComboBoxEx или также с обычным ComboBox?