gpt4 book ai didi

delphi - 从鼠标滚轮捕获垂直和水平滚动

转载 作者:行者123 更新时间:2023-12-03 19:30:36 25 4
gpt4 key购买 nike

我需要在我的应用程序中捕获鼠标滚轮事件以像现代 UI 一样移动 View 区域,因为我的应用程序将主要在笔记本电脑上运行。

我查看了 Windows 消息,显然只有从 TWinControl 继承的控件可以接收鼠标滚轮消息。

我正在使用 TApplicationEvents ,也可以捕获那些消息。我尝试处理 WM_MOUSEWHEEL消息,但它仅适用于垂直滚动。我也试过处理 WM_HSCROLLWM_HSCROLLCLIPBOARD消息,但它们根本没有被捕获。

如何捕获垂直和尤其是水平的鼠标滚轮消息并在我的软件中使用它们?

最佳答案

您只需回复WM_MOUSEHWHEEL消息。例如,这是我的一个类的摘录,它将水平鼠标滚轮滚动添加到滚动框:

procedure TMyScrollBox.WndProc(var Message: TMessage);
begin
if Message.Msg=WM_MOUSEHWHEEL then begin
(* For some reason using a message handler for WM_MOUSEHWHEEL doesn't work.
The messages don't always arrive. It seems to occur when both scroll bars
are active. Strangely, if we handle the message here, then the messages
all get through. Go figure! *)
if TWMMouseWheel(Message).Keys=0 then begin
HorzScrollBar.Position := HorzScrollBar.Position
+ TWMMouseWheel(Message).WheelDelta;
Message.Result := 0;
end else begin
Message.Result := 1;
end;
end else begin
inherited;
end;
end;

关于delphi - 从鼠标滚轮捕获垂直和水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25815803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com