Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перехват прокручивания скролла мыши.


555 ©   (2005-10-19 21:20:00) 

Пишу программу в которой окну передается значение параметра прозначности при нажатии на кнопки - условно "больше", "меньше". Уровень прозрачности выбервется не для окна МОЕЙ программы, а для любых окон системы которые захочет сделать более - менее прозрачными сам пользователь.
Меня интересует то КАК можно делать то же самое - передавая значеня получаемые при прокрутке скролла мыши.


//регистрирую Хоткей и при его использовании ....
if not RegisterHotkey(Handle, 6, MOD_WIN, VK_INSERT) then
 ShowMessage('Unable to assign F10 as hotkey.');

//...окну передается значение параметра прозначности :
if msg.hotkey = 6 then
 begin
  if (r >= 240)then r := 230;
  r := r+20;
  h := FindWindow('Shell_TrayWnd',nil);
  SetWindowLong(H, GWL_EXSTYLE, GetWindowLong(H, GWL_EXSTYLE) or WS_EX_LAYERED);
  SetLayeredWindowAttributes(H, 0, Byte(r), 2);
  CloseHandle(h);
 end;


передаваемое значение - Byte(r)

Так вот, как бы это реализовать с использованием скролла. Или подскажите какие нибудь другие пути решения задачки плиииз. )

ЗЫ. Юзер должен сам регулировать значение прозрачности окна, а натыкивания на хоткеи - это не очень удобно.


555   (2005-10-20 16:44:00) [1]

kami
Спасибо!! :)


kami   (2005-10-20 15:00:00) [2]

Можно сделать даже проще - посмотрел в VCL
TForm1 = class(TForm)
   Label1: TLabel;
 private
   { Private declarations }
   procedure WHEEL( var Message: TCMMouseWheel); message CM_MOUSEWHEEL;
 public
   { Public declarations }
 end;
//==========================================================
procedure TForm1.WHEEL( var Message: TCMMouseWheel);
begin
 inherited;
 if Message.WheelDelta>0 then
   Label1.Caption:='Up'
 else
   Label1.Caption:='Down';
end;

Копаться дальше лень, но говорю сразу, что если мышь будет в пределах контрола со скроллбоксами, то это CM_ сообщение не прокатит.


555   (2005-10-20 12:59:00) [3]

простите ради Бога, а примерчик можно???


kami   (2005-10-19 21:42:00) [4]

Ловить WM_MOUSEWHEEL, где
wParam
The high-order word indicates the distance 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.

(с) MSDN


Наверх

Титульная страница Поиск, карта сайта Написать письмо