我有一台Trust GXT-25鼠标,它有4个按钮:左,右,后和下一个。
我只能左右抓。如何在Delphi XE3中检测剩余的2个事件?
答案 0 :(得分:6)
根据鼠标实现这些按钮的方式,您必须:
直接处理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
条消息。
答案 1 :(得分:0)
根据鼠标驱动程序,甚至可以按下其中一个特殊鼠标按钮甚至不会生成任何鼠标事件,而是驱动程序可能以编程方式发送键盘命令。
您正在谈论后退和下一个按钮。这些按钮是否适用于浏览器中的后退和前进导航?
如果他们这样做,那么很可能鼠标驱动程序正在为此生成键盘等效的shourtcuts(ALT + Left for Back和ALT + Right for Next)。
所以我建议您尝试使用OnKeyDown和OnKeyUp事件来查看是否是这种情况。