为什么我的应用程序得到鼠标滚轮倾斜的消息?(Why isn't my app getting

2019-07-29 19:04发布

在这个问题如何检测倾斜鼠标滚轮的答案被公布并接受,显示所需要的代码。

我实现了我的应用程序的现有代码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_EXITSIZEMOVEWM_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

这个问题上的超级用户可能会对此有些关系-我会留意的答案在那里。

Answer 1:

使用间谍++来检查您收到的邮件。

编辑 :(!),你也可以调用m.ToString()在你的WndProc方法,以获取名称您收到的消息。 (这是由一个巨大的switch语句做Syetm.Windows.Forms.MessageDecoder.MsgToString

请注意,消息可能会只发送给任何控件具有焦点,而不是形式本身; 如果是这样的话,你可能想使用一个消息过滤器 。

另外,还要注意不同的鼠标发送不同的鼠标滚轮的消息。 我有一个罗技鼠标发送0x20EWParam为负左滚动,积极为右滚动。


编辑 (在向效应初探评论)

请记住,水平滚动条是垂直滚动后不久加入,且不受旧的程序支持。 因此,鼠标驱动程序很可能会寻找水平滚动条,并明确滚动它们。 尝试添加一个水平滚动条到您的形式,因此用户不会看到它消极定位,并看看是否改变任何东西。



文章来源: Why isn't my app getting mouse wheel tilt messages?