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


Автор: denisforum 18.6.2006, 10:42
Доброго всем время суток.

Программа вылетает при дополнении новой строчки в ComboBox:

Код

BOOL CExmDlg::OnInitDialog()
{
.......
    Book1.AddString (_T ("New str"));
.......
}

, если в свойствах "только заглавные" ComboBox выставить true.

Почему?

Использую VC2005. 

Автор: Earnest 19.6.2006, 06:50
Так не выставляй "только заглавные"! 
Или вводи только заглавные.
Ты же сам просишь контролировать ввод, и еще возмущаешься когда программа это делает.  

Автор: Coocky 19.6.2006, 15:00
 smile  smile  

Автор: denisforum 20.6.2006, 18:48
Да даже если вводить заглавными буквами программа валетает с ошибкой: "Программа выполнила не допустимую ошибку. Полать отчет в Майкрософт" !!! 

Код

BOOL CExmDlg::OnInitDialog()    
{    
.......    
    Book1.AddString (_T ("NEW STR"));    
.......    
}
 

Автор: Bukmop 20.6.2006, 19:51
denisforum, то где кроется ошибка скрыто за многоточием. Трудно ошибиться в вызове AddString, а вот откуда ноги растут у Book1 непонятно. 

Автор: Earnest 21.6.2006, 06:32
Цитата(denisforum @  18.6.2006,  11:42 Найти цитируемый пост)
если в свойствах "только заглавные" ComboBox выставить true.

А если убрать эту опцию, то не вылетает? С тем же кодом?
 

Автор: denisforum 21.6.2006, 18:35
Book1 это переменная Combbox. Многоточие - конец: BOOL CExmDlg::OnInitDialog(). С темже кодом при выключенной опции "только заглавные" всё работает. 

Автор: Dray 21.6.2006, 18:56
Все равно надо кусок кода побольше. 

Автор: Earnest 21.6.2006, 18:59
Странно... впрочем я никогда эту опцию не использовала, так что не знаю, может есть там какие-то тонкости... Делай это преобразование руками и дело с концом. 

Автор: Любитель 22.6.2006, 00:51
Не понимаю - только что проверил. Работает нормально. Причём задаём не апперкейсную строку - конвертится автоматом. Проблема точно в чём-то другом. Возможно, какая-то функция незаметно для тебя вызывается при включенном свойстве (CBS_UPPERCASE).
Попробуй запустить в дебаггере (F5). После вылета нажми Break и посмотри по Call Stack-у где ближайшая твоя (не библиотечная функция), перейди на неё и зачитай строки. Должно помочь. 

Автор: denisforum 26.6.2006, 18:38
Спасибо всем за ответы! Я разобрался. Моя ошибка. 

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