我正在开发触摸屏应用程序。该应用程序的目标是当最终用户要使用Windows7在触摸屏设备的屏幕上进行垂直触摸移动(用他的手指垂直线)时,所有活动窗口都需要最小化(类似于显示桌面)。我的问题是如何处理在桌面上活动的每个窗口中发生的所有WM_TOUCH消息。没有Windows钩子,我可以使用它来获取所有WM_TOUCH消息。我试图使用WH_GETMESSAGE希望我可以提取WM_TOUCH消息但是不起作用,我试图使用WH_MOUSE_LL并获得所有鼠标事件。有一个函数GetMessageExtraInfo,我可以通过这段代码看到从哪里启动鼠标消息:
if((GetMessageExtraInfo()。ToInt32()& MOUSEEVENTF_FROMTOUCH)== 0xFF515700) { textBoxLog.AppendText( “asdada”); } 如果是这样,则消息由TouchScreen设备启动。这仅适用于从我的应用程序(我的应用程序活动窗口)发送的消息,但不适用于我从应用程序窗口外的其他窗口获取的鼠标消息。我正在研究这个主题一段时间,我仍然无法得到任何答案。所以,如果有人知道我怎样才能将所有WM_TOUCH消息发送到我的应用程序,请回复。
米哈伊尔
答案 0 :(得分:1)
您必须挂钩全局消息proc。这样,您就是第一个获取所有消息的人。你这样做的方式不起作用,因为当你的窗口处于活动状态时,你的wndproc只是“活动”。
只需创建一个新的wndproc,它只处理你想要成为全局的消息,并根据你想要的逻辑允许它们通过或切断它们。
http://msdn.microsoft.com/en-us/library/ms644990%28v=vs.85%29.aspx
答案 1 :(得分:0)
根据similiar discussion on Windows DevCenter,这似乎不可能:
没有好办法在Windows 7上全局捕获触摸输入。正如Bob所提到的,Windows需要专门注册才能接收触摸输入,这不是可以安全地为其他应用程序的窗口完成的事情。