![]() |
|
|
![]()
|
|
| SmarTi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Доброго времени суток! Подскажите пожалуйста, как сделать неактивной одну из кнопок тулбара.
|
|||
|
||||
| Dray |
|
|||
![]() Материалист ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 7.10.2003 Где: г. Всеволожск Репутация: 2 Всего: 6 |
Обрабатывать сообщение UPDATE_COMMAND_UI.
В обработчике писать:
|
|||
|
||||
| SmarTi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Извените за мою тупость, но из этих строчек я почти ничего не понял... можно подробнее обьяснить ? или указать где можно об этом прочитать.
|
|||
|
||||
| Dray |
|
|||
![]() Материалист ![]() ![]() Профиль Группа: Участник Сообщений: 652 Регистрация: 7.10.2003 Где: г. Всеволожск Репутация: 2 Всего: 6 |
Обычно кнопка на тулбаре связанна с пунктом меню. Если это не так то тут сложней. Если связана, то нужно задисэблить пункт меню, тогда кнопка задисэблица вместе с ним. Делается так:
1) По нужному пункту меню в редакторе ресурсов нужно щелкнуть правой кнопкой и выбрать Add Event Handler... 2) В списке Message type выбрать UPDATE_COMMAND_UI, в списке Class list нужный класс. 3) Нажать кнопку Add end Edit. 4) Внутри появившейся функции написать pCmdUI->Enable (FALSE); Тогда пункт меню будет все время недоступным, а кнопка вместе с ним. Добавлено @ 02:06 В поисковиках если набрать UPDATE_COMMAND_UI находится много полезных ссылок по теме. |
|||
|
||||
| SmarTi |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Этот метод у меня почемуто не работает
А вот если зделать так :
То пункт меню действительно становится серым. Но моей проблемы это нерешает, так как кнопка на ToolBar не реагирует на это вообще, хотя и имеет тот же ID_FIZ. Что может быть не так ? Это сообщение отредактировал(а) SmarTi - 23.7.2006, 16:44 |
||||
|
|||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 7 Всего: 92 |
Насчёт первого кода - в месседж-мепе у тебя прописана эта функция макросом ON_UPDATE_COMMAND_UI?
Насчёт второго - бред. MFC заботится о всех командах (и меню, и тулбары) в приложениях не на базе диалога (т. е. юзаем OnUpdateComandUi). В диалоговых приложениях используй методы твоего тулбара. Создавал-то ты его как? |
|||
|
||||
| SmarTi |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Прописана.
Это диалоговое приложение. Насколько я понял, вся проблема в том что я использовал класс CToolBar :
А вот в классе CToolBarCtrl есть функции по нажатию и отжатию кнопки. Но у меня не получается его создать. Видимо чтото делаю не так. Поэтому покачто я просто задал необходимым кнопкам на тулбаре свойство CHECKBOX и делаю им SetChek при нажатии. |
||||||
|
|||||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Есть поиск
Я прекрасно описывал работу Тулбара в диалоге и в документе/представлении они отличаются. Отличается и классы для работы. и метода создания. Там где-то даже есть пример, как создать много мого тулбаров на диалоге -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Чтобы в модальном диалоге заработала асинхронные обновления (т.е. вызывались обработчики OnUpdateXXX), нужно:
1) добавить обработчик сообщения WM_KICKIDLE (это сообщение из afxpriv.h) 2) В этом обработчике вызвать UpdateDialogControls (this, false) (можно и True - это параметр DisbaleIfNoHandler) Добавлено @ 17:20 А у объекта ToolBar вызвать метод OnUpdateCmdUI (this, false) -------------------- ... |
|||
|
||||
| SmarTi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Всем огромное спасибо. Разобрался
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |