Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MFC - Visual Studio 2008 c++, быстрый поиск ака подсказка

37K
10 июня 2009 года
Resager
12 / / 19.09.2008
Не знаю как правильно назвать то, что я хочю реализовать, но попробую.
Вобщем есть форма (Edit обычный, ондострочный), так вот как сделать так, чтобы Когда вводишь первую букву, из текстовика брались строчки, сравнивались, и если совпадает уже напечатанная часть, то ниже выводится типа список (по которому можно нажать, и введётся строка полностью, ну или нажать кнопку стрелки вниз, тогда из списка в вформу будут поступать строки из этого списка), этот список напоминает как подменю, открывающюеся по нажатию правой кнопки по файлу в эксплорере).

Можете рассказать как делается по подробней (иногда даже в учебнеках не всё понятно). А может (если сильно трудоёмко есть другой выход?). Меню создавать умею, а вот как его соотнести с вышеописанным не знаю.

Надеюсь на вашу помощь.
288
10 июня 2009 года
nikitozz
1.2K / / 09.03.2007
Взять за основу ComboBox. Он обладает практически всей функциональностью, описанной вами, и чуть настроить его под свои нужды.
37K
10 июня 2009 года
Resager
12 / / 19.09.2008
А не подскажете ли как настроить?
288
11 июня 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: Resager
А не подскажете ли как настроить?



На вскидку: унаследовать от CComboBox и переопределить обработчик нажатия на клавиши. Если будет время, выложу примерчик.

37K
19 июня 2009 года
Resager
12 / / 19.09.2008
А может кто ещё уделит чуточку времени и покажет начинающему програмеру как тут быть?
9.0K
25 июня 2009 года
grag63
71 / / 23.01.2006
обработка WM_COMMAND по HIWORD(wParam)==CBN_EDITCHANGE:
char cTxt[300];
cTxt[0] = 0;
SNDMSG(hWndCombo, WM_GETTEXT, sizeof(cTxt), (LPARAM)cTxt);

if(cTxt[0]){
long lIndex = SNDMSG(hWndCombo, CB_FINDSTRING, -1, (LPARAM)cTxt);

if(lIndex>-1){
int iSel = LOWORD(SNDMSG(hWndCombo, CB_GETEDITSEL, 0, 0));
cTxt[0] = 0;
SNDMSG(hWndCombo, CB_GETLBTEXT, lIndex, (LPARAM)cTxt);
SNDMSG(hWndCombo, WM_SETTEXT, 0, (LPARAM)cTxt);
SNDMSG(hWndCombo, CB_SETEDITSEL, 0, MAKELPARAM(iSel, strlen(cTxt)));
}
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог