Помогите отловить в форме нажатие дополнительных кнопок Mous

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Помогите отловить в форме нажатие дополнительных кнопок Mous

Сообщение Fedorfx » 13.10.2003 (Пн) 23:25

Собственно сабж.
Но одно но. В принципе знаю как отлавливать мессаги системы.
Там еще SetwindowLong используется.
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf Test1

(Public Function Test1(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long)

Но я при использовании этого метода оболочка VB часто слетает, да и останоить по брейпоинту не получается пока из процедуры управление не вернется. Да и если ошибочка в коде - то VB слетает напроч.Одним словом слишком неудобно пользовать этот метод для ловли всего лишь 5 дополнительных кнопок мыша.
Видел я и способ с GetMessage по таймеру - но это вообще детский сад. Может кто подскажет какое нибудь элегантное решение??
P.S. У меня прога строит графики и мне необходимо по скролу их прокручивать. Много математики и отдавать ресурсы совсем неохота.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.10.2003 (Вт) 8:09

Неправда, сабклассинг рулит. Тока юзать надо осторожно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 14.10.2003 (Вт) 12:09

Я не против Субклаасинга - но если прога ОГРОМНАЯ - то осторожность нужна ювелирная.
Если можно, приведите пример Вашего осторожного использования субклассинга плз.
В моем верхнем посте есть вункция Test1. Так вот если обработчик сообщений делать в ней да еще и при приходе нужного сообщщения выполнять определленые действия то при любой ошибке VB слетает да и брейкпоинт нельзя ставить до выхода из функции Test1.( Ставить можно -только ВБ не реагирует на клаву и мышь)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.10.2003 (Ср) 7:08

А в этом случае (если обработчик велик и ужасен) следует написать оный, а потом поюзать его, не юзая сабклассинг. То есть функцию test1 будет вызывать другая процедурина, передавая разные параметры туда. Наверняка ведь нужно отследить некоторые сообщения, а не все, ну и передавай эти сообщения туда, типа как настоящие от окна, и лови баги.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 15.10.2003 (Ср) 21:44

Вот и я про тоже.
Даже если из этой процедуру вызвать другую порочный круг не рвется. Первое что приходит на ум - создать таймер и по приходу нужного события его активировать на 1 тик. Так прокатит, но как то некрасиво. Хочется добавить просто обработку колеса мыши, а залазить в такие дебри.........

MEMBER
Гугль
Гугль
 
Сообщения: 758
Зарегистрирован: 29.11.2002 (Пт) 12:02
Откуда: 10 этаж

Сообщение MEMBER » 16.10.2003 (Чт) 11:23

Fedorfx
Ты не понял. Тебе предлагают написать обработчик колеса мыши, то есть процедуру, которая будет вызываться после того, как ты перехватишь событие сабклассингом. _ОТКЛЮЧИТЬ_ сабклассинг и полностью отладить эту процедуру. Ты ведь знаешь, что в неё будет передаваться. Повесь на форму N кнопок, по количеству событий и пусть каждая из них вызывает процедуру обработки колеса мыши. Отладь обработчик, сохранись, включи сабклассинг и вперёд.
Господа! Пользуйтесь www.ya.ru
ЗЫ и www.planetsourcecode.com

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 16.10.2003 (Чт) 17:28

Понял.
Буду пробывать.
Спасибо.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 9

    TopList  
cron