【发布时间】:2014-12-19 23:20:34
【问题描述】:
我有一个 Trust GXT-25 鼠标,它有 4 个按钮:左、右、后退和下一个。
我只能左右抓。如何检测 Delphi XE3 中剩下的 2 个事件?
【问题讨论】:
-
在 QualityCentral 中查看 this feature request。
标签: delphi delphi-xe3 mouseclick-event
我有一个 Trust GXT-25 鼠标,它有 4 个按钮:左、右、后退和下一个。
我只能左右抓。如何检测 Delphi XE3 中剩下的 2 个事件?
【问题讨论】:
标签: delphi delphi-xe3 mouseclick-event
根据鼠标实现这些按钮的方式,您必须:
直接处理WM_XBUTTONDOWN 和WM_XBUTTONUP 消息,或WM_APPCOMMAND 消息。有关详细信息,请参阅 MSDN:
可以通过使用ApplicationEvents.OnMessage 事件处理程序来实现 Delphi:
const
{$EXTERNALSYM MK_XBUTTON1}
MK_XBUTTON1 = $20;
{$EXTERNALSYM MK_XBUTTON2}
MK_XBUTTON2 = $40;
{$EXTERNALSYM XBUTTON1}
XBUTTON1 = $1;
{$EXTERNALSYM XBUTTON2}
XBUTTON2 = $2;
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
case Msg.message of
WM_XBUTTONDOWN:
case LoWord(Msg.wParam) of
MK_XBUTTON1: { Handle Back };
MK_XBUTTON2: { Handle Forward };
end;
WM_XBUTTONUP:
case HiWord(Msg.wParam) of
XBUTTON1: { Handle Back };
XBUTTON2: { Handle Forward };
end;
end;
end;
使用Raw Input API注册您想要的窗口以接收WM_INPUT鼠标输入消息。
【讨论】:
OnMouseDown 事件不会为您提供所需的信息,因为它只识别标准鼠标按钮。
根据鼠标驱动程序,甚至有可能按下一个特殊的鼠标按钮甚至不会产生任何鼠标事件,而是驱动程序可能会以编程方式发送键盘命令。
您正在谈论后退和下一步按钮。这些按钮是否用于浏览器中的后退和前进导航?
如果他们这样做了,那么鼠标驱动程序很可能会为此生成与键盘等效的快捷方式,即(ALT+Left 用于返回,ALT+Right 用于下一步)。
所以我建议您尝试使用 OnKeyDown 和 OnKeyUp 事件来查看是否是这种情况。
【讨论】: