Как мне создать MFC ComboBox с поиском
-
19-08-2019 - |
Вопрос
Мне нужен комбинированный список в приложении Windows MFC, в котором есть функция поиска. Это должно работать так, что если вы начнете набирать что-то, что соответствует одному или нескольким элементам в списке, выпадающий список должен раскрыться и отобразить эти элементы. Вроде как популярные поисковые поля на основе ajax в Интернете
Вы - знаете какой-либо элемент управления, который обеспечивает эту функциональность? - есть ссылка на информацию о том, как создать такой функционал самостоятельно? - есть идеи о том, как сделать это, что вы могли бы поделиться?
Решение
Нашел это:
http://www.codeguru.com/cpp/ контроль / выпадающий / article.php / c1807 / р>
Переименовал класс, поскольку CComboBoxEx теперь является частью MFC и добавил вызов ShowDropDown () в OnEditUpdate ().
Другие советы
Часто задаваемые вопросы по API для Win32. Смотрите 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);
CEdit * pEdit = (CEdit *) pComboBox - > GetWindow (GW_CHILD);
Могу ли я получить доступ к части ListBox аналогичным образом? Необходимо очистить содержимое списка, например, используя ResetContent.
Укажите обработчик для события CBN_EDITCHANGE
, ваш обработчик будет & # 246; вызываться каждый раз, когда пользователь изменяет текст в поле редактирования.
В этом обработчике вызовите метод CComboBox::FindString()
, чтобы узнать, существует ли введенный текст в какой-либо записи комбинированного списка. Если это так, позвоните CComboBox::SetCurSel()
, чтобы выбрать его.