Кручу-верчу - запутать хочу
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- StillZero
- Ветеран
- Сообщения: 458
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Поблагодарили: 1 раз
- Контактная информация:
я думаю если вы ищете keycode, то скорее всего вы не знаете что такое сабклассинг и событие WM_MOUSEWHEEL скорее всего тоже ни о чем не скажет
решение скорее всего проще чем вам кажется, не надо ничего обрабатывать - можно поставить стороннюю программу, например, FlyWheel, или от A4TECH. На гугле поищите. прямых ссылок нет к сожалению. Все заработает и в прогах на кларе и в самой кларе.
Если все же хотите разобраться, то код ниже, выдран из письма в рассылке:
T> Через сабклассинг окна.
NT> Map
NT> WinCliSubClassFunc(UNSIGNED hWnd,SIGNED wMsg,UNSIGNED wParam,LONG
NT> lParam),LONG,PASCAL
NT> MODULE('win32')
NT> CallWindowProc(LONG,UNSIGNED,SIGNED,UNSIGNED,LONG),LONG,PASCAL,NAME('CallWin
NT> dowProcA')
NT> END
NT> END
NT> WM_MOUSEWHEEL Equate(020Ah)
NT> SB_LINEUP Equate(0)
NT> SB_LINELEFT Equate(0)
NT> SB_LINEDOWN Equate(1)
NT> SB_LINERIGHT Equate(1)
NT> SB_PAGEUP Equate(2)
NT> SB_PAGELEFT Equate(2)
NT> SB_PAGEDOWN Equate(3)
NT> SB_PAGERIGHT Equate(3)
NT> SB_THUMBPOSITION Equate(4)
NT> SB_THUMBTRACK Equate(5)
NT> SB_TOP Equate(6)
NT> SB_LEFT Equate(6)
NT> SB_BOTTOM Equate(7)
NT> SB_RIGHT Equate(7)
NT> SB_ENDSCROLL Equate(8)
NT> Event Itemize(Event:User),Pre
NT> WheelDown Equate
NT> WheelUp Equate
NT> end
NT> SavedProcAddr LONG
NT> !После открытия окна
NT> SavedProcAddr = Window{PROP:ClientWndProc}
NT> Window{PROP:ClientWndProc} = ADDRESS(WinCliSubClassFunc)
NT> WinCliSubClassFunc Function(UNSIGNED hWnd,SIGNED wMsg,UNSIGNED
NT> wParam,LONG lParam)
NT> CODE
NT> Case wMsg
NT> of WM_MouseWheel
NT> If wParam < 0
NT> Post(Event:WheelDown)
NT> else
NT> Post(Event:WheelUp)
NT> end
NT> end
NT> RETURN(CallWindowProc(SavedProcAddr,hWnd,wMsg,wParam,lParam))
>> -----Original Message-----
>> From: ClaListAdmin@Clarion.ru [mailto:ClaListAdmin@Clarion.ru]On Behalf
>> Of Ross
>> Sent: Monday, December 13, 2004 9:52 AM
>> To: ClaList List Member
>> Subject: Обработка скроллинга мышки {01}
>>
>>
>> Доброе время суток всему уважаемому сообществу...
>> Подскажите пожалуйста, собственно сабж...
>> Где то в рассылке это уже было, но найти, к сожалению, не могу
Написал: PAA(27)

решение скорее всего проще чем вам кажется, не надо ничего обрабатывать - можно поставить стороннюю программу, например, FlyWheel, или от A4TECH. На гугле поищите. прямых ссылок нет к сожалению. Все заработает и в прогах на кларе и в самой кларе.
Если все же хотите разобраться, то код ниже, выдран из письма в рассылке:
T> Через сабклассинг окна.
NT> Map
NT> WinCliSubClassFunc(UNSIGNED hWnd,SIGNED wMsg,UNSIGNED wParam,LONG
NT> lParam),LONG,PASCAL
NT> MODULE('win32')
NT> CallWindowProc(LONG,UNSIGNED,SIGNED,UNSIGNED,LONG),LONG,PASCAL,NAME('CallWin
NT> dowProcA')
NT> END
NT> END
NT> WM_MOUSEWHEEL Equate(020Ah)
NT> SB_LINEUP Equate(0)
NT> SB_LINELEFT Equate(0)
NT> SB_LINEDOWN Equate(1)
NT> SB_LINERIGHT Equate(1)
NT> SB_PAGEUP Equate(2)
NT> SB_PAGELEFT Equate(2)
NT> SB_PAGEDOWN Equate(3)
NT> SB_PAGERIGHT Equate(3)
NT> SB_THUMBPOSITION Equate(4)
NT> SB_THUMBTRACK Equate(5)
NT> SB_TOP Equate(6)
NT> SB_LEFT Equate(6)
NT> SB_BOTTOM Equate(7)
NT> SB_RIGHT Equate(7)
NT> SB_ENDSCROLL Equate(8)
NT> Event Itemize(Event:User),Pre
NT> WheelDown Equate
NT> WheelUp Equate
NT> end
NT> SavedProcAddr LONG
NT> !После открытия окна
NT> SavedProcAddr = Window{PROP:ClientWndProc}
NT> Window{PROP:ClientWndProc} = ADDRESS(WinCliSubClassFunc)
NT> WinCliSubClassFunc Function(UNSIGNED hWnd,SIGNED wMsg,UNSIGNED
NT> wParam,LONG lParam)
NT> CODE
NT> Case wMsg
NT> of WM_MouseWheel
NT> If wParam < 0
NT> Post(Event:WheelDown)
NT> else
NT> Post(Event:WheelUp)
NT> end
NT> end
NT> RETURN(CallWindowProc(SavedProcAddr,hWnd,wMsg,wParam,lParam))
>> -----Original Message-----
>> From: ClaListAdmin@Clarion.ru [mailto:ClaListAdmin@Clarion.ru]On Behalf
>> Of Ross
>> Sent: Monday, December 13, 2004 9:52 AM
>> To: ClaList List Member
>> Subject: Обработка скроллинга мышки {01}
>>
>>
>> Доброе время суток всему уважаемому сообществу...
>> Подскажите пожалуйста, собственно сабж...
>> Где то в рассылке это уже было, но найти, к сожалению, не могу

Написал: PAA(27)
Дрова от А4tech у меня установлены, и прокрутка в бровзах работает на ура. Но задача следующая: Есть окно, в нем - Image, который показывает текущее изображение из БЗ. Вот и хотелось бы с помощью колеса мышки (а не только по пробелу и бэкспэйсу), листать записи (картинки) вперед и назад. Имеються 2 подпрограммы, одна листающая вперед (по пробелу), другая - назад (по BSKey). Вопрос, как к этим уже имеющимся хоткеям добавить колесо мыши. Выше преведенная портянка кода - это то, что мне нужно?
- StillZero
- Ветеран
- Сообщения: 458
- Зарегистрирован: 06 Июль 2005, 2:17
- Откуда: Хабаровск
- Поблагодарили: 1 раз
- Контактная информация:
даВыше преведенная портянка кода - это то, что мне нужно?
вот эти строки отвечают куда крутанули вверх или вниз
и посылается событие в окно, соответственно в самом окне можно их обработатьNT> If wParam < 0
NT> Post(Event:WheelDown)
NT> else
NT> Post(Event:WheelUp)
NT> end
PS
подробнее о сабклассинге можно почитать например здесь http://www.pisoft.ru/verstak/Insider/col_subclass.htm
Написал: PAA(27)