C# 无法在WndProc中获取Windows 8 WM_指针*事件

C# 无法在WndProc中获取Windows 8 WM_指针*事件,c#,winapi,windows-8,touch,gestures,C#,Winapi,Windows 8,Touch,Gestures,我在Visual Studiio 2013中创建了一个DLL,它可以处理操纵事件并输出精确的平移、旋转和缩放。之后,我尝试将其与OpenGL项目合并,以提供适当的手势支持 DLL是在选择了.NET 4.0客户端配置文件的情况下构建的,我在VS2013中用一个简单的实现对其进行了测试。一切工作都完美无缺,安装也很简单 现在OpenGL项目正在VS2010中进行维护和开发,因此我启动了VS2010,引用了我的DLL,并在WndProc上进行了重写,以将WM_指针*事件放入我的DLL中 问题是我不了解

我在Visual Studiio 2013中创建了一个DLL,它可以处理操纵事件并输出精确的平移、旋转和缩放。之后,我尝试将其与OpenGL项目合并,以提供适当的手势支持

DLL是在选择了.NET 4.0客户端配置文件的情况下构建的,我在VS2013中用一个简单的实现对其进行了测试。一切工作都完美无缺,安装也很简单

现在OpenGL项目正在VS2010中进行维护和开发,因此我启动了VS2010,引用了我的DLL,并在WndProc上进行了重写,以将WM_指针*事件放入我的DLL中

问题是我不了解事件我从未收到过WM_POINTER*事件

我有一些想法:

  • 开发机器是Win7,测试机器是WIN8-可能在构建时需要一些WIN8功能

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

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

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

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

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

干杯


编辑:忘了提到OpenGL项目基本上是一个WinForms应用程序。

WM\u指针消息是在Windows 8中引入的,这就是为什么它不能在您的开发机器中工作。您需要求助于旧的、不推荐的WM_TOUCH和WM_手势信息:

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

Reddit用户darinitis写了这个

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

OpenGL可能正在创建一个窗口,或者作为您的子窗口 winforms窗口。因为指针永远不会在你的上方 窗口(在GL窗口上),您不会得到指针消息

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


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

Asker知道这一点,也不希望发生这种情况。消息未到达Win8测试机器上。