Как мне создать 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);