Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отключить управление активностью кнопок у CToolBar 
V
    Опции темы
Cheloveck
Дата 17.8.2010, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



Когда я создаю CToolBar и помещаю на него кнопки, то они не активны, пока я для каждой не повешу обработчик. Как можно отключить такую медвежью услугу MFC?
У меня кнопки генерируются динамически, и обрабатывать их я бы хотел через ON_COMMAND_RANGE, но они не включаются.

Это сообщение отредактировал(а) Cheloveck - 17.8.2010, 14:52


--------------------
user posted image
PM Jabber   Вверх
Cheloveck
Дата 18.8.2010, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



актуально


--------------------
user posted image
PM Jabber   Вверх
Earnest
Дата 18.8.2010, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Если есть обработчик на весь диапазон кнопок, то кнопки активируются, не важно через RANGE ты делаешь или поштучно. Если у тебя не так, ищи ошибку (дырку).
Отключить можно так: в самом удобном для тебе месте (фрейм, вью, документ), переопределяешь OnCmdMsg, для nCode ==CN_UPDATE_COMMAND_UI проверяешь ид-р на попадание в диапазон и активируешь переданный (через Extra) CCmdUI. И возвращаешь TRUE.


--------------------
...
PM   Вверх
Cheloveck
Дата 18.8.2010, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



Спасибо, помогло.

Цитата(Earnest @  18.8.2010,  09:01 Найти цитируемый пост)
Если есть обработчик на весь диапазон кнопок, то кнопки активируются, не важно через RANGE ты делаешь или поштучно. Если у тебя не так, ищи ошибку (дырку).

Дырок нет. После включения вторым способом, все обработчики выполняют свои действия.


--------------------
user posted image
PM Jabber   Вверх
Cheloveck
Дата 18.8.2010, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



Не, ошибка была. Оказывается ID элементов 2х-байтные, я генерировал значения выше. Странно, ведь в сообщениях ID приходят в 4-х байтных переменных.


--------------------
user posted image
PM Jabber   Вверх
Earnest
Дата 18.8.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не в сообщениях, а в обработчиках - чисто чтобы int не пилить. 
А в сообщении WM_COMMAND ид-р вместе с кодом упаковывается в WPARAM, поэтому должен помещаться в WORD.


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


 




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


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

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