Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с сообщениями, Моя Ахиллесова пята... 
:(
    Опции темы
Coocky
Дата 19.10.2004, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Стыдно признаться-совсем не умею работать с сообщениями.Это AppWizard виноват. :rtfm Всегда пользовался его услугами.Но создавая все более серьезные проги ,понимаю-с ним далеко не уйдешь.
Вот писал прогу.У меня в SDI приложении есть форма на котороую я кинул ListCtrl.Мне надо обрабатывать сообщение о вертикальной прокрутке.Но в стардатном наборе Визарде его нет.Понимаю,что надо было создавать свой класс,производный от листа.Там почти все сообщения,которые для окон есть.Но переписывать не могу,очень большой код.
Вот интересно можно было б как-то внести обработчик сообщения прокрутки ручками в карту сообщения.
Не понимаю разницу (не знаю) между ON_NOTIFY,WM_NOTIFY,WM_NOTIFY_REFLECT,WM_COMMAND,ON_COMMAND и т.д.
Как можно в своей фунции послать сообщение,указав правильный wParam и lParam;или перехватить там сообщение и обработать по-своему.
Стал похож на собаку Павлова.Помогите,кому не лень.Или ссылку дайте хорошую.В МСДН пробовал залесть,голова кругом -инфа раскинута по всему хелпу.Устал.
А я тоже чем-то пригожусь. :)


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Gorbatovsky
Дата 20.10.2004, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Общие элементы управления Win32 отправляют большинство уведомлений в виде сообщений WM_NOTIFY. Стандартные элементы управления Windows, используемые также в 16-разрадной Windows, отправляют большинство уведомлений в виде сообщений WM_COMMAND.

Например в карту сообщений я добавил еще один обработчик ON_NOTIFY_EX
BEGIN_MESSAGE_MAP(C2DPointBox, CDialog)
//{{AFX_MSG_MAP(C2DPointBox)
..
ON_NOTIFY_EX(TTN_NEEDTEXT, 0, OnNeedToolTipText)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()


В следующем примере я обрабатываю сообщение ON_NOTIFY_REFLECT
BEGIN_MESSAGE_MAP(CDragListCtrl, CListCtrl)
//{{AFX_MSG_MAP(CDragListCtrl)
ON_NOTIFY_REFLECT(LVN_BEGINDRAG, OnBegindrag)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()


Посмотреть на сообщения отправляемые в программе можно утилитой Spy++
Запускаю свою программу потом Spy++.
Нахожу в нем интересующее меня окно. Например ListBox.
При помощи контекстного меню открываю окно с сообщениями для ListBox.
Дальше двигаю слайдеры и вижу, в окне сообщения.
Там их очень много. Можно установить фильтр.
Например нас интересуют
WM_VSCROLL
WM_MOUSEMOVE.

Теперь нам нужно в классе ListBox обработать эти сообщения.
Эти можно добавить при помощи Визарда





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


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Цитата
Посмотреть на сообщения отправляемые в программе можно утилитой Spy++

Да я без нее ни куда :)
Цитата
ON_NOTIFY_EX,ON_NOTIFY_REFLECT

В чем различия?
А как можно отправить сообщение LVN_BEGINDRAG,из своей функции?



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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