Windows Mobile 6.5开发环境搭建以及变化

发布时间: 2009/6/8 10:12:25

1.搭建开发环境,按照以下顺序安装。

安装Visual Studio 2008(我安装的试用的Team Suite版:VS2008TeamSuite90DayTrialCHSX1429243.iso)
安装Microsoft ActiveSync 4.5.msi
安装Windows Mobile 6 Professional SDK Refresh.msi(如果需要6.0版本的中文模拟器,需要安装中文包:Windows Mobile 6 Professional Images (CHS).msi)
安装Windows Mobile 6.5 Professional Developer Tool Kit (CHS).msi

如下图,第一项QVGA即是6.5版本320x240屏幕的模拟器,高亮的一项的是真机,当你需要在真机上调试时使用这项,可见6.5版本的开发工具包并没有带真机调试项:
clip_image002
----------------------------------------------------------------------------------------------------

2.让我们来看下Windows Mobile 6.5 Professional在开发方面的变化。

Today Plug-in

你为6.5以前版本编写的今日插件,仍然可以在6.5版本使用,6.5的策略让默认方案与其它子项互斥,当你选中自己的插件时,默认方案前面的勾将自动去掉。右下图显示的即是默认方案。
clip_image002[10]clip_image002[12]

6.5版本改变的部分是:现在不允许把你自己编写的插件的Type设为5,当你设置为5的时候,系统会把你改回成4。
关于4和5在6.5以前版本差距还是很大的,请看我的笔记:
HKEY_LOCAL_MACHINE\Software\Microsoft\Today\Items下的Type为DWORD类型。
If the value of Type is 4, a custom plug-in is added to the Today Screen.
If the value of Type is 5, the plug-in is a custom pinned plug-in.
我自己编写的插件设置为5的时候就解决了横竖屏切换太慢问题,慢的原因是Type为4的插件,每次横竖屏切换,系统都会发送4次WM_PAINT消息!微软在6.5版本优化了这个问题。下图就是优化之后的当横竖屏切换时系统发送的消息截图:
clip_image002[1]
Type另外还有以下值:
If the value of Type is 0, it indicates a reserved plug-in that displays the device owner information is added to the Today Screen.
If the value of Type is 1, it indicates a reserved plug-in that displays the Appointments is added to the Today Screen.
If the value of Type is 2, it indicates a reserved plug-in that displays the Mail is added to the Today Screen.
If the value of Type is 3, it indicates a reserved plug-in that displays the Tasks is added to the Today Screen.
If the value of Type is 6, the plug-in is a custom permanent pinned plug-in.

clip_image002[8]
----------------------------------------------------------------------------------------------------

说到为什么使用蜂窝式菜单,记得我以前看过一篇文章有介绍^^,因为正六边形可以使触摸面积最大(相连的)。
image 
“A grid is the most efficient method to pack as many squares into an area as possible, but not for circles. The mathematically most efficient method to arrange non-overlapping circles - a problem called “sphere packing” - is actually and as you might have guessed by now, hexagonal. ”

Windows下面并不能实现真正的窗口透明,目前我们开发的应用程序都是采用将下一个窗口的DC先在当前窗口绘制一遍,实现透明按钮也是这个道理,其实都是伪透明,那么任何实现真正透明的窗口?这个问题我的继续思考,不知读者您能否解答^^
----------------------------------------------------------------------------------------------------

Gesture(手势) APIs

A new set of APIs is being introduced that will enable application developers to take advantage of the new Windows Mobile 6.5 touch gesture framework. The gesture APIs allow an application to handle touch gesture input and provide a visually consistent experience with the rest of the device UI.

The APIs are defined in the following header files:

<gesture.h>

<GesturePhysicsEngine.h>

<WindowAutoGesture.h>

Note that the gesture APIs are only available on the Windows Mobile Classic and Professional SKUs. The headers and libraries are installed in the Windows Mobile SDK\Pocket PC\ folder. Samples that make use of these APIs are installed into the Windows Mobile 6.5 Developer Tool Kit\Samples\ folder.(在第3部分会详细介绍。)
----------------------------------------------------------------------------------------------------

内核以及驱动开发部分没 有太多变化,因为它仍然是基于Windows CE 5.x系统。当Windows Mobile 7.0推出时,因为是基于Windows CE 6.0系统,所以驱动编写也将发生大的变化。Windows CE发生的两次大的内核变化,一次是Windows CE 3.0,一次就是现在的Windows CE 6.0。下面讨论的是Windows Mobile 6.5带来的部分新功能。
----------------------------------------------------------------------------------------------------

3.Windows Mobile 6.5 Developer Tool Kit自带的Samples,全部都是介绍Gesture的使用。

第一个例子

Code Sample Name: Gesture Metrics Sample

Feature Area: Touch

Description:
    This sample demonstrates how to use the Gesture APIs.  More specifically, it
    demonstrates:
    - use of RKGetGestureMetrics
    - handling WM_GESTURE GID_HOLD, GID_SELECT and GID_DOUBLESELECT messages
    This sample was designed to show how to use RKGetGestureMetrics and interpret
    its results.
    This example also shows how to handle GID_HOLD, GID_SELECT and GID_DOUBLESELECT
    messages.

Relevant APIs/Associated Help Topics:
    RKGetGestureMetrics
    RKGetGestureInfo
    GESTUREMETRICS
    WM_GESTURE
----------------------------------------------------------------------------------------------------

第二个例子

Code Sample Name: Code Sample Name: Physics Engine Sample

Feature Area: Touch

Description:
    This sample demonstrates how to use the Gesture APIs.  More specifically, it
    demonstrates:
    - use of Physics Engine
    - handling WM_GESTURE GID_PAN, GID_SCROLL and GID_END
    This example shows how to handle gesture scrolling and how to properly use
    Physics Engine.

Relevant APIs/Associated Help Topics:
    RKCreatePhysicsEngine
    RKQueryPhysicsEngine
    RKDestroyPhysicsEngine
    RKGetGestureInfo
    PHYSICSENGINESTATE
    PHYSICSENGINEINIT
    WM_GESTURE
----------------------------------------------------------------------------------------------------

第三个例子

Code Sample Name: WAG Sample

Feature Area: Touch

Description:
    This sample demonstrates how to use the Gesture APIs.  More specifically, it
    demonstrates:
    - use of Window Auto Gesture API
    This example shows how to handle gesture scrolling using Window Auto Gesture API.

Relevant APIs/Associated Help Topics:
    RKSetWindowAutoGesture
    RKGetAnimateMessageInfo
    WAGINFO
    ANIMATEMESSAGEINFO

更多细节我将在以后的文章中介绍,如果您也能博客中补充更多的东西,将very kind of you^^

赞助商