Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как ловить сообщения от MFC Grid control 2.27  (Прочитано 9993 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Boriska
Помогающий

ua
Offline Offline

« : 02-01-2013 09:40 » 

Народ привет. У меня есть диалог на нем MFC Grid control 2.27. Покапался все активировал, заполняю грид рабоатет. Но вот нужно было обработать клик по ячейке грида ничего лучшего не нашел как внедритьтся в OnBtnClick этого грида дописать туда свои строки которые по переданному в CGridCtrl указателю на мой класс вызыали функции моего класса. Вот теперь мне надо сделать реакцию на перемещение строки по гриду клавишами стрелок это опять лезть в OnKeyDown(.....). кажется я сильно не прав.
Попытался задать этот вопрос на CodeProject отправили на форумы. Может кто подскажет как ловить сообщения в классе диалога куда встроен этот грид?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 02-01-2013 18:39 » 

lkote, Spy++ в помощь

ну и унаследоваться от грида и переопределить обработчик - вполне правильно
Записан

Boriska
Помогающий

ua
Offline Offline

« Ответ #2 : 03-01-2013 07:30 » 

Алексей а можете про Spy++ подробнее - чем бы он мне помог? А за унаследование спасибо попробую.

Добавлено через 6 минут и 29 секунд:
Да еще вопросик:  наследоваться как ? Студия предлагает наследоваться как класс MFC и как класс C++.
« Последнее редактирование: 03-01-2013 07:37 от lkote » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 03-01-2013 13:37 » 

lkote, он помогает тем, что позволяет увидеть все сообщения к окну

наследоваться так:

class MyGrid:public CGridCtrl
{

};
Записан

Boriska
Помогающий

ua
Offline Offline

« Ответ #4 : 03-01-2013 14:51 » 

Унаследовался как mfc (добавить класс mfc) вроде работает спасибо. Только вот при наследовании он хочет наследоваться от CWnd приходится ручками подправить.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 03-01-2013 16:12 » 

lkote, так визард особо тут и не нужен - можно вручную и создать файлы )
Записан

Boriska
Помогающий

ua
Offline Offline

« Ответ #6 : 03-01-2013 18:15 » 

Алексей меня еще просто карта сообщений запутала. В теории когда тебя учат классам там же нет никаких карт а тут надо было унаследовать с картой поэтому визардом. Если бы просто унаследовать класс то понятно что можно просто руками а тут боюсь напутать.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 04-01-2013 08:36 » 

lkote, можно переопределить функцию CWnd::WindowProc и обойтись без карты сообщений

http://msdn.microsoft.com/en-us/library/8k57wfbs(v=vs.80).aspx
Записан

Boriska
Помогающий

ua
Offline Offline

« Ответ #8 : 04-01-2013 10:17 » 

Туда свич с желаемыми сообщениями и по концовке вызвать WindowProc базового класса ?
Алексей подскажите как можно разобраться в лабиринте маршрутизации сообщений и команд в MFC, есть такая почти одноименная статься "Блуждания по лабиринту маршрутизации сообщений и команд в MFC" http://www.rsdn.ru/article/mfc/maze.xml но честно сказать не осилил поэтому и вопросы такие задаю
« Последнее редактирование: 04-01-2013 10:19 от lkote » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 04-01-2013 17:03 » 

Да, свич, там нужные типы сообщений. Разбираешь их состав.

Вызывать или не вызывать родной WindowProc - это зависит от задачи: если ты только "наблюдаешь", логгируешь что-то, то конечно же вызвать с неизменёнными параметрами. Если хочешь поменять параметры - меняешь и вызываешь. Если хочешь абсолютно новое поведение - то вместо вызова делаешь своё.  Как вариант - сначала вызов родного обработчика, затем делаешь своё поверх (уже не вызывая в конце)

Лабиринт - я не в курсе про какой лабиринт речь Улыбаюсь   А на рисунке вижу вообще только один тип сообщения - WM_COMMAND. Но и его можно разобрать безо всяких лабиринтов  А черт его знает...

В общем - столкнёшься, там поглядим
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines