gpt4 book ai didi

delphi - 按下 Shift 键处理鼠标滚轮事件

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

如果在按下Shift键时使用鼠标滚轮,我想实现水平滚动。但在这种情况下我没有收到任何 WM_MOUSEWHEEL 消息:

procedure WMMouseWheel(var Msg: TMessage); message WM_MOUSEWHEEL;  // is not called

根据 documentation ,应该有一个带有 MK_SHIFT WPARAM 的 WM_MOUSEWHEEL 消息。

有什么想法吗?

最佳答案

编辑:以下代码使用 WM_MOUSEHWHEEL,而不是 WM_MOUSEWHEEL 来处理水平滚动。

我在我的代码库中找到了这段代码:

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;

所以,你已经明白了。我不明白为什么会这样,但您应该能够像我一样执行相同的操作,并重写 WndProc 来处理此消息。

关于delphi - 按下 Shift 键处理鼠标滚轮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45099831/

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