Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CComboBox, CBN_SELCHANGE


Автор: lv151 2.4.2009, 17:25
Есть комбобокс с которым я работаю через DDX_CBString(......, str).
Сделал обработчик для CBN_SELCHANGE. 
В зависимости от выбранного значения построена логика.
Проблема в том, что для того, чтобы в переменную str "занеслось" выбранное значение, его надо выбрать 2 раза.

Как-будто  UpdateData не отрабатывает.

VC6

Автор: Albor 2.4.2009, 17:57
Посмотри внимательнее на сообщения, должно быть ещё CBN_SELCHANGING ( если правильно написал). Одно из них вызывается перед тем как элемент выбирается, другое после. Из-за того, что используешь сообщение возникающее до выбора приходится щёлкать 2 раза.

Автор: lv151 2.4.2009, 18:52
У меня только CBN_SELCHANGE.

Автор: Earnest 3.4.2009, 08:52
В момент CBN_SELCHANGE строка в поле еще старая. Обработка этого уведомления предполагает получение индекса текущего элемента (CBIndex). Но вызывать UpdateData по каждому плевку неразумно: CBN_SELCHANGE приходит и тогда, когда ты просто возишь мышкой по списку, еще ничего не выбрав. По-хорошему, UpdateData нужно вызывать только в какие-то важные моменты, когда пересчитать нужно действительно почти все. А в обработчике SELCHANGE - просто спроси текущий индекс и сделай, что там тебе надо.

Автор: lv151 3.4.2009, 20:21
Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)