| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Вызов функции при любом вызове тулбара |
| Автор: Nuzur 29.1.2007, 18:49 |
Знаю что может это признак некоректного планирования. Скорее всего что оно так и есть. НО. Есть тулбар при клике на любой item вызывалась функция которая проверяла бы кое что. Просто тулбар сейчас не маленький а при его разширении и вовсе будет не красиво. какие есть выходы? Кроме смены проффесии, страны, пола и сексуальной ориентации есть решения? |
| Автор: Greeen 30.1.2007, 00:15 |
| можно например определить что итемы тулбара будут иметь идентификаторы скажем из диапазона 5000 - 6000 и тогда ON_COMMAND_RANGE(IDC_FIRST_TLBBTN, IDC_LAST_TLBBTN, OnToolbarButton) CYourDlg::OnToolbarButton(UINT nID) { // ..... } |
| Автор: Nuzur 30.1.2007, 13:35 | ||||
| Greeen, Попробывал так но не работает ИД идут по порядку, сделал так .h
.cpp
Но дебаггер туды не попадает |
| Автор: Greeen 30.1.2007, 23:00 |
| идентификаторы можно изменить в resource.h |
| Автор: Nuzur 31.1.2007, 11:37 |
| Greeen, идентификаторы идут по порядку. Просто видно для тулбаров оно не предназначено Может попробуем пройтись по стандартным проблемам? Может я что-то пропустил? |
| Автор: Nuzur 31.1.2007, 12:29 | ||||
| Создаю еще один пост дабы те кто столкнется с такой же проблемой был в курсе. Дело в том что мелкомягкие дают такой вот пример:
в таком варианте у меня ничего не сработало. А вот если так :
Но теперь другая БЕДА. Теперь не вызываются функции обработчики, как поправить? Насколько я понимаю физику процессса, то я получил сообщение в свой обработчик всего тулбара и на том и ладно, типа дальше оно никуда не пошло. ВНИМАНИЕ ВОПРОС: как вызвать функцию обработчик зная ее ИД? |
| Автор: Earnest 31.1.2007, 13:25 |
| Оставь MessageMap как был (с обработчиками для каждой команды), но переопредели OnCmdMsg. Сначала общая дополнительная обработка, потом вызов базового метода. Только не забудь, что туда же попадают ON_UPDATE_COMMAND_UI, так что проверяй nCode. Добавлено @ 13:29 В карте сообщений срабатывает самый первый обработчик. Естественно, если COMMAND_RANGE стоит вначале, то попав туда, больше никуда не попадешь. |
| Автор: Nuzur 31.1.2007, 19:15 |
| Earnest, я решил проблему вызовом " в ручную". Но спасибо большое за совет. Просто проблема в том что проект огромный и лезть OnCmdMsg мне страшно так как он иногда сам по себе разваливается и без моего вмешательства. |