在这个问题如何检测倾斜鼠标滚轮的答案被公布并接受,显示所需要的代码。
我实现了我的应用程序的现有代码WndProc
方法(这是工作,我需要捕获其他消息),但它不工作。 我检查和WndProc
没有出现得到任何消息都更不用说那些具有的价值0x020E
当我倾斜的鼠标滚轮。
我使用Windows XP SP3的微软无线激光5000(完全修补)与.NET 3.5 SP1安装。
我已经更新了我的IntelliPoint驱动程序08/05/2009日版本7.0.258.0。
其它应用程序(如Visual Studio中的Word,paint.NET)的获取和作用在鼠标滚轮倾斜所以它必须是我的应用程序,但我看不到我在做什么错。
只是为了完整性这里是我的代码:
protected override void WndProc(ref Message m)
{
Trace.WriteLine(string.Format("0x{0:X4}", m.Msg));
switch(m.Msg)
{
case WM_EXITSIZEMOVE:
Opacity = 1.0;
break;
case WM_SYSCOMMAND:
int command = m.WParam.ToInt32() & 0xfff0;
if (command == SC_MINIMIZE && this.minimizeToTray)
{
MinimizeToTray();
}
break;
case WM_MOUSEHWHEEL:
// Handle tilting here
break;
}
base.WndProc(ref m);
}
该Trace.WriteLine
电话是检查是否倾斜消息通过获取的尝试。 其他消息WM_EXITSIZEMOVE
和WM_SYSCOMMAND
正在接收。 消息被定义为:
private const int WM_EXITSIZEMOVE = 0x0232;
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xF020;
private const int WM_MOUSEHWHEEL = 0x020E;
注: 我删除了[硬件]标签,因为我99%肯定它不是那是错的其他应用程序接收消息的硬件。
UPDATE
我已经添加了滚动条的多行文本框,以我的申请和接收并且在鼠标滚轮倾斜消息的行为。 因此,所有我需要做的是找到适合的代码;)
UPDATE
这个问题上的超级用户可能会对此有些关系-我会留意的答案在那里。