Как мне создать MFC ComboBox с поиском - PullRequest
4 голосов
/ 05 декабря 2008

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

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

Ответы [ 5 ]

2 голосов
/ 11 декабря 2008

Нашел это:

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

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

0 голосов
/ 10 декабря 2008

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

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

0 голосов
/ 08 декабря 2008

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

0 голосов
/ 08 декабря 2008

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

CEdit *pEdit = (CEdit *)pComboBox->GetWindow(GW_CHILD);
0 голосов
/ 05 декабря 2008

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

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

...