Windows Mobile 6.5 Gesture API 介绍
2010-06-01 22:53:00 来源:WEB开发网这六种控件是天然支持手势的,我们不需要编写一行的代码(WebBrowser控件除外),他们在必要的时候就可以自动支持手势。下面我附上的例子中,你可以看到,我用TabControl的tabPage来分别包含了一个Listbox, Listview, ComboBox和Treeview。然后给这些控件填充一些数据以便测试。您可以将该工程编译后分别部署到Windows Mobile 6以及Windows Mobile 6.5的真实设备/模拟器上(注意,该工程需要.NET Compact Framework 3.5的支持)。您会发现,同样的代码在Windows Mobile 6.5上已经天然支持手势了,不过在Windows Mobile 6.0上并不支持任何手势。
这里需要特别指出的是,对于WebBrowser控件来说,在.NET Compact Framework中无法直接支持手势。必须在C++中通过设定HS_NOSELECTION来建立DISPLAYCLASS。参见: http://blogs.msdn.com/mikefrancis/archive/2009/07/21/windows-mobile-6-5-web-browser-control-enabling-gesture-support.aspx
GestureDemo1.zip(测试工程源代码) (31.51 kb)
下面是该工程在Windows Mobile 6.5上运行的状态:
使用Managed Gesture API
在本系列的第一节《Windows Mobile 6.5 Gesture API 介绍 --- (1) 概述》中,我们提到了微软针对Windows Mobile的Gesture提供了5种不同的手势。他们分别是Tap, Double Tap, Hold, Flick, Pan。如果您使用C++来开发Windows Mobile 6.5上的应用程序,那么请参考MSDN上关于Windows Mobile上Gesture的参考文档 http://msdn.microsoft.com/en-us/library/ee220917.aspx。 如果您是使用托管代码,那么您可以使用由微软的两位工程师(Alex Yakhnin, Ron Buckton)所封装的针对托管代码的API(http://code.msdn.microsoft.com/gestureswm)。
在这套API中,分别针对这5种手势做了封装,不过名字略有改动:Tap改为Select; Double Tap改为DoubleSelect; Flick改为Scroll。 Hold和Pan没有改变。这套API的用法很简单,实例化一个他们封装好的手势识别器组件,然后给它指定要监控的对象。最后,加上针对这5种手势的事件处理函数即可。如下代码所示:
private void InitGestureRecognizer()
{
gestureRecognizer1 = new GestureRecognizer(this.panel1);
//You can also set the TargetControl property
//gestureRecognizer1.TargetControl = this.panel1;
更多精彩
赞助商链接