Как мне создать MFC ComboBox с поиском

Мне нужен комбинированный список в приложении Windows MFC, в котором есть функция поиска. Это должно работать так, что если вы начнете набирать что-то, что соответствует одному или нескольким элементам в списке, выпадающий список будет отображаться в раскрывающемся списке. Вроде как популярные поисковые поля на основе ajax в сети

Знаете ли вы какой-либо элемент управления, который обеспечивает эту функцию? - есть ссылка на информацию о том, как создать такой функционал самостоятельно? - есть идеи о том, как сделать это, что вы могли бы поделиться?

5 ответов

Решение

Нашел это:

http://www.codeguru.com/cpp/controls/combobox/article.php/c1807/

Переименовал класс, так как CComboBoxEx теперь является частью MFC, и добавил вызов ShowDropDown() в OnEditUpdate().

CEdit *pEdit = (CEdit *)pComboBox->GetWindow(GW_CHILD);

Могу ли я получить доступ к части ListBox аналогичным образом? Необходимо очистить содержимое списка, например, используя ResetContent.

Предоставить обработчик для CBN_EDITCHANGE событие, ваш обработчик будет вызываться каждый раз, когда пользователь изменяет текст в поле редактирования.

В этом обработчике вызовите CComboBox::FindString() метод, чтобы увидеть, существует ли напечатанный текст в любой из ваших записей в выпадающем списке. Если это так, позвоните CComboBox::SetCurSel() выбрать его.

Это FAQ по Win32 API. Смотрите Adv. Win32 api ng news://194.177.96.26/comp.os.ms-windows.programmer.win32 (вам вообще не нужен CBN_EDITCHANGE. Это автоматически с api)

Полный доступ к полю редактирования поля со списком:

CEdit *pEdit = (CEdit *)pComboBox->GetWindow(GW_CHILD);
Другие вопросы по тегам