积极答复者
多点触摸全局钩子问题

问题
答案
-
如果在一个可视化树里可以用RouterEvent来传消息出来;如果不在可以定义一个static型的Event,全局来触发调用。
- 已标记为答案 Jie BaoModerator 2011年3月13日 16:31
-
你好 zysc,
我个人觉得如果你只是在同一个应用里面的多个画面间切换,并不需要挂到全局的钩子。WPF 4提供了 Touch 的相关事件,我们只需要一个计时器 (DispatcherTimer Class),然后来检测当前画面的 Touch 事件即可。 由于WPF提供了陆游事件机制,如果说这多个画面是在同一个可视树种的话,那么我们只需要处理上层元素的相应事件即可。
如果说你要实现在系统层面的对于触摸消息的处理,那么挂在这个WM_TOUCH 消息上, 然后回调检测时间间隔。
Sincerely,
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 Jie BaoModerator 2011年3月13日 16:31
-
你所关心的只是最顶层的那个元素的 Touch 事件 其它的你都不用关心,一点都不麻烦啊。因为底层的所有元素的 冒泡Touch事件都会被路由到最顶层(前提是你不能在底层随便的 e.Handled = true;)。
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已建议为答案 Jie BaoModerator 2011年3月13日 16:31
- 已标记为答案 zysc 2011年3月15日 13:35
全部回复
-
你好 zysc,
我个人觉得如果你只是在同一个应用里面的多个画面间切换,并不需要挂到全局的钩子。WPF 4提供了 Touch 的相关事件,我们只需要一个计时器 (DispatcherTimer Class),然后来检测当前画面的 Touch 事件即可。 由于WPF提供了陆游事件机制,如果说这多个画面是在同一个可视树种的话,那么我们只需要处理上层元素的相应事件即可。
如果说你要实现在系统层面的对于触摸消息的处理,那么挂在这个WM_TOUCH 消息上, 然后回调检测时间间隔。
Sincerely,
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 Jie BaoModerator 2011年3月13日 16:31
-
如果在一个可视化树里可以用RouterEvent来传消息出来;如果不在可以定义一个static型的Event,全局来触发调用。
- 已标记为答案 Jie BaoModerator 2011年3月13日 16:31
-
路由事件中,隧道和冒泡的传递方向不同,比如带有Preview前缀的事件一般都是隧道事件,它会从一个元素树的上层往下层路由。而和他相同的没有前缀的一般都是冒泡事件,会从下层往上层路由。具体说明你可以看下这个: http://msdn.microsoft.com/zh-cn/library/ms742806.aspx#routing_strategies
当一个路由事件在中间层被设置了 e.Handled = true; 之后,这个事件就会终止路由。
对于你的问题,我想还是应该把它简单地框在.Net 的范畴中,不要复杂的区使用全局钩子。通过事件来处理,像Allen说的,全局静态的一个事件也是可以帮你实现的,在计时器到点的时候,就触发这个静态的事件去交换画面。
Sincerely,
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已建议为答案 Jie BaoModerator 2011年3月13日 16:31
-
你所关心的只是最顶层的那个元素的 Touch 事件 其它的你都不用关心,一点都不麻烦啊。因为底层的所有元素的 冒泡Touch事件都会被路由到最顶层(前提是你不能在底层随便的 e.Handled = true;)。
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已建议为答案 Jie BaoModerator 2011年3月13日 16:31
- 已标记为答案 zysc 2011年3月15日 13:35