Windows mobile 6.5開發人員工具包在6月初就已經面世了。它給廣大技術愛好者帶來的新特性包括Widgets和Gesture API。在Widgets應用上,已經有開發人員進行了探索和嘗試,包括Guojing、馬老師和Jake.NET等。這次我們就一起來看看TDK中Gesture API的例子。
在開始之前,對於Gesture API,我們需要注意的有以下兩點:
第一,Gesture API只能使用在Windows Mobile 6.5平台上,之前版本的Windows Mobile都不支援,所以,就不要想著在Windows Mobile 6.0或者6.1(因為目前很多人的裝置都是這個版本)上來開發基於Gesture API的應用。
第二,Windows Mobile 6.5平台上,也只是Classic and Professional SKUs支援Gesture API,,因為大家知道,Standard是不支援觸摸的。
TDK內建的Gesture API例子位於%\Windows Mobile 6.5 Developer Tool Kit\Samples目錄下。包含三個工程:GestureMetricsSample、PhysicsEngineSample和WagSample。這三個工程分別用到了Gesture.h、GesturePhysicsEngine.h和WindowAutoGesture.h這三個標頭檔,都位於%\Program Files\Windows Mobile 6 SDK\PocketPC\Include\Armv4i目錄下。
Gesture Metrics Sample
GestureMetricsSample這個例子展示了如何使用WM_GESTURE中的GID_HOLD(保持), GID_SELECT(選擇)和GID_DOUBLESELECT(雙擊)這三個訊息。
當使用者用觸筆單擊螢幕的時候,啟動保持定時器(ID_HOLD_TIMER);如果在WM_GESTURE中檢測到是GID_HOLD,那麼就kill這個保持定時器(ID_HOLD_TIMER),並提示使用者;如果在WM_GESTURE中檢測到是GID_SELECT,那麼就啟動雙擊定時器(ID_DOUBLESELECT_TIMER);如果在WM_GESTURE中檢測到是GID_DOUBLESELECT,那麼就kill這個雙擊定時器(ID_DOUBLESELECT_TIMER),並提示使用者。
Physics Engine Sample
PhysicsEngineSample這個例子展示了如何使用WM_GESTURE中GID_PAN, GID_SCROLL 和GID_END這三個訊息。需要注意的是,在使用Physics Engine之前,需要聲明一個HPHYSICSENGINE類型的全域變數。
有了這個Physics Engine,我們就可以在裝置上瀏覽大解析度的圖片,使用觸筆在觸控螢幕上滑動,選擇需要瀏覽的部分,在過渡時,具有一個滑動滾屏的效果,這個功能目前是新加入的。大家可以嘗試用windows mobile內建的"圖片和視頻"工具開啟圖片,這時是沒有滑動滾屏的效果的,但是程式中如果我們使用了Physics Engine,就可以產生滑動滾屏的效果。
WagSample
WagSample這個例子實現的功能和PhysicsEngineSample這個例子是一樣的,不同的是,它加入了使用者的選擇,即我們使用者可以選擇“是否支援觸摸筆”、“是否支援滾屏”等等。
這裡只是很膚淺地介紹了WM6.5 TDK內建的Gesture API例子,主要是MSDN上的資料實在是太少(目前好像還沒有)。基本上是把自己使用這三個例子的體會發上來和大家共用一下。下一步的目標是自己做一個執行個體,學會如何使用Gesture API,並逐漸解開它神秘的面紗。