Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вызов функции при любом вызове тулбара, Тоесть при выборе любого пункта. 
:(
    Опции темы
Nuzur
Дата 29.1.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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




Знаю что может это признак некоректного планирования. Скорее всего что оно так и есть. НО.
Есть тулбар при клике на любой item вызывалась функция которая проверяла бы кое что. Просто тулбар сейчас не маленький а при его разширении и вовсе будет не красиво. какие есть выходы?

Кроме смены проффесии, страны, пола и сексуальной ориентации есть решения?


--------------------
Never again...
PM MAIL   Вверх
Greeen
Дата 30.1.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



можно например определить что итемы тулбара будут иметь идентификаторы скажем из диапазона 5000 - 6000
и тогда ON_COMMAND_RANGE(IDC_FIRST_TLBBTN, IDC_LAST_TLBBTN, OnToolbarButton)

CYourDlg::OnToolbarButton(UINT nID)
{
   // .....
}


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Nuzur
Дата 30.1.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Greeen, Попробывал так но не работает ИД идут по порядку, сделал так

.h
Код

afx_msg void OnToolBar(UINT nID);

.cpp
Код

ON_COMMAND_RANGE(ID_FIRST, ID_LAST, OnToolBar)

и

void CMainFrame::OnToolBar(UINT nID)
{

}


Но дебаггер туды не попадает smile В плане в OnToolBar().

Это сообщение отредактировал(а) Nuzur - 30.1.2007, 19:20


--------------------
Never again...
PM MAIL   Вверх
Greeen
Дата 30.1.2007, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



идентификаторы можно изменить в resource.h


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Nuzur
Дата 31.1.2007, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Greeen, идентификаторы идут по порядку. Просто видно для тулбаров оно не предназначено smile Все вроде правильно сделал smile даже вне //}}AFX_MSG_MAP положил и в хедере и в реализации.

Может попробуем пройтись по стандартным проблемам? Может я что-то пропустил?

Это сообщение отредактировал(а) Nuzur - 31.1.2007, 11:58


--------------------
Never again...
PM MAIL   Вверх
Nuzur
Дата 31.1.2007, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Создаю еще один пост дабы те кто столкнется с такой же проблемой был в курсе.

Дело в том что мелкомягкие дают такой вот пример:

Код

...
BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
    //{{AFX_MSG_MAP(CMyApp)
    ...
    //}}AFX_MSG_MAP
ON_COMMAND_RANGE(ID_MYCMD_ONE, ID_MYCMD_TEN, OnDoSomething)
END_MESSAGE_MAP( )
...


// Generated message-map functions
protected:
    //{{AFX_MSG(CMyApp)   
        ...
    //}}AFX_MSG
    afx_msg void OnDoSomething( UINT nID );
    DECLARE_MESSAGE_MAP()


 в таком варианте у меня ничего не сработало.
А вот если так :

Код

...
BEGIN_MESSAGE_MAP(CMyApp, CWinApp)
ON_COMMAND_RANGE(ID_MYCMD_ONE, ID_MYCMD_TEN, OnDoSomething)
    //{{AFX_MSG_MAP(CMyApp)
    ...
    //}}AFX_MSG_MAP
END_MESSAGE_MAP( )
...


Но теперь другая БЕДА. Теперь не вызываются функции обработчики, как поправить?
Насколько я понимаю физику процессса, то я получил сообщение в свой обработчик всего тулбара и на том и ладно, типа дальше оно никуда не пошло.
ВНИМАНИЕ ВОПРОС: как вызвать функцию обработчик зная ее ИД?

Это сообщение отредактировал(а) Nuzur - 31.1.2007, 12:48


--------------------
Never again...
PM MAIL   Вверх
Earnest
Дата 31.1.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Оставь MessageMap как был (с обработчиками для каждой команды), но переопредели OnCmdMsg. Сначала общая дополнительная обработка, потом вызов базового метода. Только не забудь, что туда же попадают ON_UPDATE_COMMAND_UI, так что проверяй nCode.

Добавлено @ 13:29 
В карте сообщений срабатывает самый первый обработчик. Естественно, если COMMAND_RANGE стоит вначале, то попав туда, больше никуда не попадешь.


--------------------
...
PM   Вверх
Nuzur
Дата 31.1.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Earnest, я решил проблему вызовом " в ручную". Но спасибо большое за совет. Просто проблема в том что проект огромный и лезть OnCmdMsg мне страшно так как он иногда сам по себе разваливается и без моего вмешательства.


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


 




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


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

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