Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Послать BN_CLICKED 
:(
    Опции темы
xTr1m
Дата 4.7.2009, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени суток. Я создал класс CMyButton, наследованный от CButton и поместил его в dll. 
В другом проекте я создал диалог, поместил на диалог кнопку. В классе диалога сделал переменную типа CMYButton
и связал ее с кнопкой.

В классе CMyButton у кнопки собственная отрисовка. Я переопределил событие нажатия правой
кнопки мыши. Мне нужно, чтобы при этом генерировалось событие левой кнопки. Сделал так:

Код

GetParent()->SendNotifyMessage(BN_CLICKED, (WPARAM)GetDlgCtrlId(), (LPARAM)0);


Штука в том, что событие не приходит в мой диалог. Что я не так делаю? Заранее спасибо.
PM MAIL WWW ICQ   Вверх
Earnest
Дата 4.7.2009, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Нет такого сообщения - BN_CLICKED. Это уведомление, посылаемое в форме WM_COMMAND.
Примерно так: 
Код

GetParent()->PostMessage (WM_COMMAND, MAKELONG (GetDlgCtrlID(), BN_CLICKED), (LPARAM)m_hWnd);

Не уверена насчет порядка элементов WPARAM, уточни в MSDN, кто там младший, а кто старший.
Посылать лучше асинхронно, кроме тех случаев когда нужна именно синхронная обработка.



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


Опытный
**


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

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



Спасибо, естественно помогло =))
Только у меня вопрос по поводу асинхронной/синхронной обработки. О чем идет речь?
PM MAIL WWW ICQ   Вверх
Earnest
Дата 6.7.2009, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Когда ты вызываешь SendMessage, уведомление посылается и обрабатывается "прямо сейчас", до возврата из SendMessage. N/t/ стек растет и прочие вложенности. Иногда это нужно, но редко. В основном, когда нужно получить ответ. В остальных случаях лучше действовать по принципу "уведомил и вышел", т.е. вызывать PostMessage.


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


 




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


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

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