Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не получается сделать активным ComboBox в Ribbon'e, CMFCRibbonComboBox 
V
    Опции темы
Kirow
Дата 12.10.2011, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.11.2007

Репутация: нет
Всего: нет



Есть у меня CMFCRibbonBar, на котором имеется ComboBox.

Добавил переменную для комбо бокса и выполнил даункаст.
Код

comboBox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, m_wndRibbonBar.FindByID(ID_COMBO_SQL));

Есть у меня переменная CList<CString> tableList
Отображаю содержимое этой переменной в комбо бокс.
Код

POSITION curPos = m_wndView.tableList.GetHeadPosition();
        
        for (int i = 0; i < m_wndView.tableList.GetCount(); i++)
        {
            comboBox->AddItem(m_wndView.tableList.GetNext(curPos));
        }


Но в программе элемент комбо бокса остается неактивным. 
Как сделать комбо бокс активным? Либо какова причина что у меня он ничего не показывает и никак не реагирует ни на что?
PM MAIL   Вверх
Earnest
Дата 13.10.2011, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Kirow @  12.10.2011,  17:05 Найти цитируемый пост)
Как сделать комбо бокс активным? Либо какова причина что у меня он ничего не показывает и никак не реагирует ни на что? 

"Либо" тут не катит, это 2 большие разницы.
Чтобы помещать итемы в комбобок, его совсем не обязательно делать активным, но если надо, то как всегда SetRocus.

Информации маловато, но скорее всего вы наступили на любимые грабли MFC-новичков: используете временную переменную как постоянную. Т.е. получили указатель на combobox когда-то, а потом используете его в других ф-ях. Так низзя, временные окна живут до первого идла. Либо делайте первую свою строчку каждый раз при использовании комбобокса (можно без DOWNCAST, просто C-style cast coйдет), либо сабкласьте (через DDX_Control либо SubclassWindow) его на постоянной основе (привяжите к своей переменной наглухо, но тогда она должна быть объектом CComboBox, а не указателем на него. Либо работать через сообщения.



--------------------
...
PM   Вверх
Kirow
Дата 13.10.2011, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 31
Регистрация: 1.11.2007

Репутация: нет
Всего: нет



не получается и все тут...
через DDX_Control нельзя привязать к переменной CMFCRibbonComboBox (хотя не факт что если привязал бы, то оно заработало бы), а если привязать к CComboBox, то на этапе выполнения получаю ошибку (к примеру если вызвать метод AddString).
На счет временной переменной...я уже давно долбаюсь с этой проблемой и переменные у меня были как глобальные так и локальные(от безысходности)...по моему я даже во все классы пробовал пихать..
В общем было бы не плохо мне исходник подкинуть с рабочим CMFCRibbonComboBox на Ribbon'e (чтобы нажимался и выпадал список,ну и желательно чтобы из кода список заполнялся)
5 минут дела по идее...Создаем визардом проект, в ресунсах береходим на риббон, из тулбокса добавляем панельку и комбобокс, а как блин делать дальше я не могу догадатся...вроде бы делаю все правильно.Получаю ссылку на комбобокс и добавляю туда данные (ошибок на этапе выполнения никаких). Но вот на самом риббоне комбобокс остается неактивным и не кликабельным.

UPD:
срань...как же я не люблю С++, надо было тупо добавить пустой обработчик сообщений для комбобокса...для едита не добавлял, и он работал блин...

Это сообщение отредактировал(а) Kirow - 13.10.2011, 13:56
PM MAIL   Вверх
Earnest
Дата 13.10.2011, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Kirow @  13.10.2011,  14:48 Найти цитируемый пост)
Но вот на самом риббоне комбобокс остается неактивным и не кликабельным.

Так вот что ты под "неактивным" понимал... Странная ситуация, обычно так ведут себя только кнопки (задизэблены в отсутствие обработчика). 
И причем здесь C++, это реализация этого риббона такая кривая...
Так получилось у тебя добавить элементы? Если сильно раздражает пустой обработчик для комбика, замени его обработчиком обновления (ON_UPDATE_COMMAND_UI) и сделай внутри Enable (true).


--------------------
...
PM   Вверх
Ghost99
Дата 30.10.2011, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 6.6.2009

Репутация: нет
Всего: нет



Посмотри пример из MSDN "RibbonGadgets" - выдает готовый код

Это сообщение отредактировал(а) Ghost99 - 30.10.2011, 14:49

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  RibbonGadgets.rar 402,17 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.