![]() |
|
|
![]()
|
|
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Привет, у меня такой вопрос.
Создал окно производное от CWnd и разместил его в родительском окне CView. Зарегистрировал его: WNDCLASS.lpfnWndProc = ::DefWindowProc. Я не получаю сообщение WM_MOUSEWHEEL. Просмотрел МСДН, понял что можно через сублассинг. Но конкретного и полного примера не нашел. Кто сможет помочь мне?
|
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: нет Всего: 56 |
а в чём собственно вопрос? ты хочешь перехватить сообщение WM_MOUSEWHEEL ? или как?
смотри сюда:
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
И в каком месте ты собираешься получать сообщения? -------------------- ... |
|||
|
||||
| papam |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 104 Регистрация: 2.2.2006 Где: Украина::Запорожь е Репутация: нет Всего: 4 |
Вот как работать с мышью на С:
http://articles.org.ru/cfaq/index.php?qid=...mmostrecent=yes Это сообщение отредактировал(а) papam - 12.3.2007, 23:05 --------------------
No Fucking Future |
|||
|
||||
| maq |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
здесь:
|
||||
|
|||||
| maq |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
1. Я пишу на VS 2005, OS WinXP SP2. В других окнах OnMouseWheel ловится. 2. Написал ф-ю (из МСДН):
выдает ошибку error C2440: 'type cast' : cannot convert from 'LRESULT (__stdcall RGrid::* )(HWND,UINT,WPARAM,LPARAM)' to 'LRESULT' |
||||||
|
|||||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Убери преобразование к LRESULT
-------------------- ... |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
ошибки нет, но и опять не ловит |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Слушай, а что тема в MFC делает?
Ты MFC-то используешь? Если да, то сабклассить нужно совсем по-другому: ты, скорее всего, вообще в свою MainWndProc не попадаешь. Добавлено @ 16:56 Ну точно - производное от CWnd и т.д. Не надо тебе его сабклассить. Напиши стандартный обработчик WM_MOUSEWHEEL, помести в карту сообщений и радуйся. -------------------- ... |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Earnest, все это уже делал. Не получилось потому и создал тему.
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
В принципе все правильно, должно работать. Если, конечно, ты в первом случае добавляешь обработчик в карту сообщений. И у тебя не Win 95\98 или старая NT.
Возможно, сообщение хватает кто-то другой? Поставь проверку в PreTranslateMessage, скажем, в родительском окне и просдеди, куда оно девается дальше. Возможно, придется ставить проверку и выше - можно начиная с приложения. Или можешь для начала посмотреть Спаем, приходит ли сообщение и кому. -------------------- ... |
|||
|
||||
| maq |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
поставил
Но родительское окно ловит (Spy показал), а мне нужно именно из дочернего окна! Я разве ошибаюсь, что все дело в
в RegisterWindowClass? |
||||||
|
|||||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Ошибаешься. Я имела ввиду вовсе не это. Спай показывает, что это сообщение приходит в родительское окно? Т.е. во вью? Отлично. Это значит, что скорее всего твое окно (грид) не в фокусе. Иначе сообщение приходило бы ему. Можно либо автоматически ставить фокус на грид, когда мышь над ним пролетает. Можно просто пересылать (из PreTranslateMessage родительского окна) это сообщение гриду, если, опять же, мышь над ним. Еще вопрос. Грид занимает у тебя весь вью или только часть? Если весь, то какого лешего ты громоздишь окно на окно? Просто сделай Грид видом да и все. -------------------- ... |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Отлично, теперь получилось! Поставил SetFocus() в OnMouseMove!
Не могу, т.к. я сейчас разрабатываю свой ActiveX (пока как отдельное окно), а родительское окно - временный контейнер. Поэтому мне надо было минимум (желательно 0) кода писать во временном контейнере! За помощь спасибо! Добавлено @ 16:23 Сорри, + не получилось, у меня недостаточно постов! |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |