Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2009, 22:58   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Отрицательно значение у wParam?

Передаю приложения прокрутку колеса мыши:
С кручение мыши вперёд получается:
Код:
SendMessage(TV, WM_MOUSEWHEEL, MakeWParam(0,120),0);
Пытаюсь крутить назад:
Код:
SendMessage(TV, WM_MOUSEWHEEL, MakeWParam(0,-120),0);
Но тут ошибка:
Код:
[DCC Error] Unit1.pas(42): E1012 Constant expression violates subrange bounds
Как исправить?
Вот описание wParam для MouseWheel из справки:
Код:
zDelta

The value of the high-order word of wParam. Indicates the distance that the wheel is rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user.
TwiX вне форума Ответить с цитированием
Старый 09.08.2009, 00:29   #2
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Заменять системные сообщения своими довольно затруднительно - необходимо хорошо знать структуру сообщения (TWMMouseWheel описана в модуле Messages.pas).
Что-то не припоминаю чтобы применялся такой экзотический способ работы с колесом. Как правило, системные сообщения от колеса мыши обрабатывают в оконной процедуре и нет никакой необходимости посылать форме или компонентам собственные сообщения. Все равно у вас это не получится так как это делает винда.

А MakeWParam макрос, который в параметрах принимает только беззнаковые значения (The MAKEWPARAM macro creates an unsigned 32-bit value for use as a wParam parameter in a message), от того и ошибка.
Karabash вне форума Ответить с цитированием
Старый 09.08.2009, 00:38   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Тю, возьми да переделай
Код:
function MakeWParam(A, B: Integer): Longint; overload;
begin
  Result := A or B shl 16;
end;
пыщь
JTG вне форума Ответить с цитированием
Старый 09.08.2009, 01:03   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

2Karabash, чего-то я Вас плохо понимаю =)

2JTG, спасибо огромное =) Работает идеально)
А как работает shl?
TwiX вне форума Ответить с цитированием
Старый 09.08.2009, 01:13   #5
Karabash
Форумчанин
 
Регистрация: 26.07.2009
Сообщений: 216
По умолчанию

Цитата:
2Karabash, чего-то я Вас плохо понимаю =)
Надо было бы сперва мне спросить для чего колесные сообщения посылаете, какова цель, а я в философию ударился.
Имел ввиду, что сообщения от колеса генерит винда, а обрабатываются они в приложении, а у вас как-то наоборот получается: ваше приложение посылает колесное сообщения и, видно, само же и обрабатывает. Не возбраняется, но немного странновато выглядит (в моем представлении, конечно - чего его посылать, когда есть кому это делать).
Karabash вне форума Ответить с цитированием
Старый 09.08.2009, 01:28   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Побитовый сдвиг влево, 16 бит = 2 байта
выполняется сначала shl затем or

0000BBBBh (hiWord)
shl
16
----------
BBBB0000h
or
0000AAAAh (loWord)
----------
BBBBAAAAh
_hi___lo
пыщь
JTG вне форума Ответить с цитированием
Старый 09.08.2009, 01:40   #7
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

2Karabash, Колёсное сообщения посылаю в ТВ-тюнер, чтобы уменьшить/увеличить громкость из игры/другого приложения. Не знаю что тут странного, это же винАПИ - крутя колесо мышки руками, Вы делает то же самое =)

2JTG, спасибо ещё раз =)
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значение в DBEdit artemavd БД в Delphi 1 15.05.2009 18:17
Значение операторов [ и ] Ivan_32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 30.11.2008 15:50
Значение DBLookupComboBox MARCH Компоненты Delphi 58 16.11.2008 20:45
значение из подстроки GazimagomedovM Помощь студентам 2 10.07.2008 08:50
среднее значение tonic Microsoft Office Excel 1 04.01.2008 00:20