Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка и прием сообщений, PostMessage 
:(
    Опции темы
mishka20
Дата 29.4.2009, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я создал не стандартный элемент, на базе класса, унаследованного от CWnd. Мой элемент содержит 16 кнопок. Припомощи функции Create разместил его в главном окне. Мне нужно, чтобы при нажатии на одну из кнопок элемента, от него посылалось сообщение главному окну.

Пишу в функции обработчика одной из кнопок:

      
Код

 AfxGetMainWnd()->PostMessage(BN_CLICKED, 0, 0);


Для класса главного окна создал карту сообщений:


Код

       BEGIN_MESSAGE_MAP()
                    ON_CONTROL(BN_CLICKED, <ID_моего_элемента>, <обработчик>)
       END_MESSAGE_MAP()


Это почему-то не работает.... Что не так? Подкажите...
PM MAIL   Вверх
Albor
Дата 30.4.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 9



AfxGetMainWnd - это родительское окно. Это оно посылает сообщение а не контрол.
может вот так из контрола:
Код

::PostMessage(AfxGetMainWnd()->GetSafeHwnd(), BN_CLICKED,0,0);


Это сообщение отредактировал(а) Albor - 30.4.2009, 13:58
PM MAIL ICQ   Вверх
mishka20
Дата 30.4.2009, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не Помогло.... =((((

Люди, ну как из нестандартного элемента, дочернего от CWnd, отправить сообщение в родительское окно и принятьего там????  Можно в общих чертах объснить... Я уже мозг сломал.  smile 
Мжет быть надо в параметры lParam и wParam что-нибудь вписать? Или может от конкретных элементов должны исходить конкретные сообщения и деть так как я делаю нелзя? Как тогда надо?
PM MAIL   Вверх
Albor
Дата 1.5.2009, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 9



Цитата(mishka20 @  30.4.2009,  22:16 Найти цитируемый пост)
Мжет быть надо в параметры lParam и wParam что-нибудь вписать? 

В чём проблема? Поставь, испытай. wParam в младшем слове должен содержать ID контрола. Можно  воспользоваться утилитой Spy, просмотрев где теряется данное сообщение, с какими параметрами оно поступает и т.д.

PM MAIL ICQ   Вверх
mishka20
Дата 1.5.2009, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вписал ID контрола. Утилита, как я понял, только системные сообщения показывает. Снова ступор.... ((
PM MAIL   Вверх
Earnest
Дата 4.5.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



 smile 
Послать нужно сообщение, а BN_CLICKED - это код уведомления, причем, кажется равный нулю. Ну и что ты посылаешь? Нечто вроде телепатического сигнала. Хоть попробуй разобраться, что и как происходит в системе.
Посылать нужно команду: WM_COMMAND, с кодом уведомления BN_CLICKED. Как сформировать сообщение - сам разбирайся с помощью MSDN, крепче запомнишь. Обработчик в карте сообщений у тебя правильный, но можно короче: ON_BN_CLICKED или вообще ON_COMMAND.

Стандартный, нестандартный контрол - глубоко фиолетово, принцип общий. Лучше всего прочитать в MSDN техническую статью про прохождение сообщений и диспетчеризацию команд. Кроме того, на rsdn вроде была хорошая статья на русском об этом. Когда в голове на эту тему проясниться, все станет просто.


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


 




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


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

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