| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Отправка и прием сообщений |
| Автор: mishka20 29.4.2009, 22:15 | ||||
| Я создал не стандартный элемент, на базе класса, унаследованного от CWnd. Мой элемент содержит 16 кнопок. Припомощи функции Create разместил его в главном окне. Мне нужно, чтобы при нажатии на одну из кнопок элемента, от него посылалось сообщение главному окну. Пишу в функции обработчика одной из кнопок:
Для класса главного окна создал карту сообщений:
Это почему-то не работает.... Что не так? Подкажите... |
| Автор: Albor 30.4.2009, 13:45 | ||
| AfxGetMainWnd - это родительское окно. Это оно посылает сообщение а не контрол. может вот так из контрола:
|
| Автор: mishka20 30.4.2009, 22:16 |
| Не Помогло.... =(((( Люди, ну как из нестандартного элемента, дочернего от CWnd, отправить сообщение в родительское окно и принятьего там???? Можно в общих чертах объснить... Я уже мозг сломал. Мжет быть надо в параметры lParam и wParam что-нибудь вписать? Или может от конкретных элементов должны исходить конкретные сообщения и деть так как я делаю нелзя? Как тогда надо? |
| Автор: Albor 1.5.2009, 09:50 |
В чём проблема? Поставь, испытай. wParam в младшем слове должен содержать ID контрола. Можно воспользоваться утилитой Spy, просмотрев где теряется данное сообщение, с какими параметрами оно поступает и т.д. |
| Автор: mishka20 1.5.2009, 20:45 |
| Вписал ID контрола. Утилита, как я понял, только системные сообщения показывает. Снова ступор.... (( |
| Автор: Earnest 4.5.2009, 09:39 |
| Послать нужно сообщение, а BN_CLICKED - это код уведомления, причем, кажется равный нулю. Ну и что ты посылаешь? Нечто вроде телепатического сигнала. Хоть попробуй разобраться, что и как происходит в системе. Посылать нужно команду: WM_COMMAND, с кодом уведомления BN_CLICKED. Как сформировать сообщение - сам разбирайся с помощью MSDN, крепче запомнишь. Обработчик в карте сообщений у тебя правильный, но можно короче: ON_BN_CLICKED или вообще ON_COMMAND. Стандартный, нестандартный контрол - глубоко фиолетово, принцип общий. Лучше всего прочитать в MSDN техническую статью про прохождение сообщений и диспетчеризацию команд. Кроме того, на rsdn вроде была хорошая статья на русском об этом. Когда в голове на эту тему проясниться, все станет просто. |