【问题标题】:Not getting Windows 8 WM_POINTER* events in WndProc未在 WndProc 中获取 Windows 8 WM_POINTER* 事件
【发布时间】:2014-09-05 13:09:08
【问题描述】:

我在 Visual Studiio 2013 中创建了一个 DLL,它与操作事件一起工作并输出精细的平移、旋转和缩放。之后我尝试将其与 OpenGL-Project 合并,以提供适当的手势支持。

DLL 是在选择 .NET 4.0 Client Profile 的情况下构建的,我在 VS2013 中通过一个简单的实现对其进行了测试。一切都完美无缺,设置也很简单。

现在 OpenGL 项目正在 VS2010 中进行维护和开发,所以我启动了 VS2010,引用了我的 DLL覆盖了 WndProc strong> 将 WM_POINTER* 事件放入我的 DLL。

问题是我没有收到事件!我一次也没有收到 WM_POINTER* 事件。

我有一些想法:

  • 开发机是 Win 7,测试机是 Win 8 - 可能在构建时需要一些 WIN8 功能?

  • 我根本无法在 VS2010 中使用 Win8 API,即使我只使用在 VS2013 中生成的 DLL

  • Windows 以某种方式确定我不想要 WM_POINTER* 事件,因为我运行了一个未明确为 Windows 8 开发的应用程序(不确定如何更改)

我已经测试了各种版本的 .NET Framework,所以这不是 .NET 的问题。 我进一步验证了没有为这个特定的应用程序触发 WM_POINTER* 事件(在任何其他应用程序中都可以正常工作)并且我的 WndProc 覆盖工作正常。

我非常绝望,不知道还有什么可以尝试的。

如果有 WIN8 指针经验的人能帮助我,我将非常高兴。

干杯!

编辑:忘了说 OpenGL-Project 基本上是一个 WinForms 应用程序。

【问题讨论】:

    标签: c# winapi windows-8 touch gestures


    【解决方案1】:

    WM_POINTER 消息是在 Windows 8 中引入的,这就是它在您的开发机器中不起作用的原因。您将需要使用旧的、已弃用的 WM_TOUCH 和 WM_GESTURE 消息:http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/b8cb28dd-b2ba-4392-b3a8-6bf18518087f/windows-8-wmpointer-vs-wmtouch?forum=tabletandtouch

    【讨论】:

    • Asker 知道这一点,并且不希望会发生这种情况。消息没有到达 Win8 测试机器。
    【解决方案2】:

    对于任何对此感到困惑的人:

    Reddit-用户 darinitis 写了这篇

    您在 VS2013 中是否有 OpenGL 窗口,或者只是为了测试 在 winforms 项目中捕捉手势?

    OpenGL 可能正在创建一个窗口,或者作为您的子窗口 winform 窗口。因为指针从来没有真正在你的 窗口(它在 GL 上),您不会收到指针消息。

    您是否使用过 Spy++ 查看实际的窗口层次结构并查看是否 正在为您的窗口上方的 OpenGL 创建另一个窗口?

    而且就在现场。我的 OpenGL 孩子没有转发事件,而是试图处理它们。这样一来,我的 WinForms 应用程序中就没有任何内容了。

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多