Текущий архив: 2005.11.13;
Скачать: CL | DM;
Вниз
Перехват прокручивания скролла мыши. Найти похожие ветки
← →
555 (2005-10-19 21:20) [0]Пишу программу в которой окну передается значение параметра прозначности при нажатии на кнопки - условно "больше", "меньше". Уровень прозрачности выбервется не для окна МОЕЙ программы, а для любых окон системы которые захочет сделать более - менее прозрачными сам пользователь.
Меня интересует то КАК можно делать то же самое - передавая значеня получаемые при прокрутке скролла мыши.
//регистрирую Хоткей и при его использовании ....
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)
Так вот, как бы это реализовать с использованием скролла. Или подскажите какие нибудь другие пути решения задачки плиииз. )
ЗЫ. Юзер должен сам регулировать значение прозрачности окна, а натыкивания на хоткеи - это не очень удобно.
← →
kami © (2005-10-19 21:42) [1]Ловить 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
← →
555 (2005-10-20 12:59) [2]простите ради Бога, а примерчик можно???
← →
kami © (2005-10-20 15:00) [3]Можно сделать даже проще - посмотрел в 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 16:44) [4]kami
Спасибо!! :)
Страницы: 1 вся ветка
Текущий архив: 2005.11.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.028 c