你会编写Windows CE应用程序吗?
发表于:2007-07-01来源:作者:点击数:
标签:
一、概述 随着移动办公和信息化的普及,笔记本电脑和掌上电脑变得越来越普及。掌上电脑的操作平台主要有Microsoft Windows CE和3Com Palm。Windows CE秉承了桌面Windows平台的很多优点:易于使用、可扩展性好。Windows CE也提供了丰富的编程工具。本文将讨论
一、概述
随着移动办公和信息化的普及,笔记本电脑和掌上电脑变得越来越普及。掌上电脑的操作平台主要有Microsoft Windows CE和3Com P
alm。Windows CE秉承了桌面Windows平台的很多优点:易于使用、可扩展性好。Windows CE也提供了丰富的编程工具。本文将讨论如何编写Windows CE应用程序。
二、选择合适的编程工具
要编写Windows CE应用程序,你需要使用Windows CE
开发工具包。该工具包将成为你的开发系统。工具包的选择由你使用的编程语言而定,你可以选择的编程语言有Visual C++、Visual Basic和Visual J++。但是最佳选择莫过于Visual C++,因为掌上电脑资源有限,C++编译器效率高、
性能好,应用程序结构紧凑;而Visual Basic应用程序代码过于冗长且效率低下;Visual J++在确定平台上的运行性能不如Visual C++。在你决定编程语言之后,便需要安装相应的工具包。Windows CE开发工具包有如下几种:
Windows CE Toolkit for Visual C++
Windows CE Embedded Toolkit for Visual C++
Windows CE Toolkit for Visual Basic
Windows CE Toolkit for Visual J++
你选择的工具包将成为你现有IDE的一部分,并提供调试和测试Windows CE应用程序的工具。比如,Windows CE Toolkit for Visual C++提供了一个仿真程序,允许你在Windows桌面系统上(如Windows NT)监测Windows CE应用程序的执行情况,而不需要把它们装载到Windows CE机器上再调试;Windows CE Toolkit for Visual C++和Windows CE Toolkit for Visual Basic都提供了从桌面系统访问远程设备、并在远程设备上执行特定的Windows CE任务的工具。
当然, 工具包中也提供了一些为Windows CE定制了的技术和工具,如COM(Component Object Model,组件对象模型)、MFC(Microsoft Foundation Class,微软基类库)、ATL(Active Template Libraries,活动模板库)以及NLS(National Language Support国家语言支持)。如果你精通桌面开发,那么一定非常熟悉这些技术,这里不再赘言。
三、将Win32应用程序转换成Windows CE应用程序
Windows CE是一个32位操作系统,因此在编写Windows CE应用程序时,你可以重用桌面Windows应用程序的大部分代码。尽管将现有Win32代码转变成Windows CE代码比从零做起快的多,你必须在转换时始终牢记Windows CE操作系统与桌面平台的很多不同:
硬件设计和功能不同。比如,有限的内存将会大大影响你对图形的操作速率。
用户界面的不同。传统的用户界面诸如键盘、鼠标和显示器将不再用于Windows CE操作系统。
Windows CE API与Win32 API的不同。Windows CE支持Win32 API的一部分函数,同时又扩充了一些特定的Windows CE函数,如命令条(Command Bar)API。
字符集的不同。Windows CE字符集类似于Windows NT而不同于Windows 9x,它是基于Unicode的。
下面详细讨论编写Windows CE应用程序是应当注意的重点问题。
3-1.硬件
运行Windows CE的机器(以下简称Windows CE机器)通常比台式计算机的资源贫乏的多,但它们也有很多特别的设备,比如有的Windows CE机器配备了全球卫星定位系统(Global Positioning System,GPS)。因此开发中,对于Windows CE的硬件配置是要重点考虑的。而通常最重要的几点莫过于内存、电源、人机交互设备(详见3-2节)以及通讯设备。
3-1-1.内存管理
Windows CE被设计用来运行在很少的内存上的,它们通常也没有大容量存储设备。Windows CE支持了一些特有的管理有限内存的函数、结构、消息。比如,如果内存资源在操作中变得紧缺时,Windows CE就有一个减小内存使用以及恢复可用内存的函数。该函数的关键是WM_HIBERNATE消息,它通知应用程序"内存已经很少了。这个消息在Win32平台中并不存在,你必须针对Windows CE程序实现该消息的处理程序。
3-1-2.电源管理
Windows CE机器的电源通常基于电池的,而且电量很有限。开发时应遵循下面的原则来使用大多数有限的能量资源:
避免占用不必要的CPU资源。
限制使用一些常用的桌面机器的硬件,因为他们能够迅速消耗电池,比如Modem。
不要"超负荷"使用电池资源。
3-1-3.通讯设备
如前所述,Windows CE提供了Modem接口,另外,它也支持一些桌面系统不常用到的通讯设备,包括红外线收发器、广播接收器、GPS等,编写相关应用程序时要特别考虑。
3-2.用户界面
Windows CE机器和桌面系统的最大差别就在于用户界面。
显示器是关键之一。Windows CE机器中显示器通常很小,而且分辨率也不高。尽管一些机器有彩色显示器,但是还有很多只支持灰度图像。因此,对于那些显示器无法表示的信息(如高分辨率图像信息)来说,你需要自行开发一种方法来传达给客户。
另一个关键的用户界面的组成部分是指点设备,它让用户能够与用户界面中的很多元素交互。尽管Windows CE机器中没有鼠标,但很多Windows CE机器都拥有触摸屏以及手写笔等类似于鼠标的指点设备。但是还有一些Windows CE界面根本没有这些设备,它们依赖于其它技术进行导航,比如方向键,另外还有一些革新式的交互方式,比如语音导航。
还有一个需要注意的地方就是Windows CE机器不可能配备键盘,即使有虚拟键盘,也很难操作,因此在编写应用程序过程中,尽量让用户少用键盘录入信息。
3-3.应用程序编程接口(API)
Windows CE是32位操作系统,它不支持任何16位函数,还有一些32位函数没有完全被实现。同时, Windows CE支持并扩展了一些Win32 API的子集。
另外,Windows CE支持了COM/OLE的一部分,你可以重用使用COM/OLE、MFC或ATL的应用程序代码,再作一些微小的修改即可。
3-4.Windows CE字符集
Windows CE像Windows NT一样,是Unicode环境。尽管Windows CE支持ASCII功能来进行文件交换,但是Windows CE的本地文本格式是Unicode。下面列出了将基于ASCII的代码转换到基于Unicode代码的注意事项:
在程序中包含tchar.h头文件。该文件包含所有必要的转换。
使用Win32字符串函数,而不要使用C运行库中等价的函数。
使用TCHAR或者LPTSTR来声明字符串变量。使用TCHAR声明字符串变量的代码既能够作为基于Unicode代码编译,又能够作为基于ASCII代码编译。
使用Text宏来表示字符串,比如Text("a string")。使用Text宏的优点在于:当使用UNICODE编译标志编译时,该字符串作为Unicode代码被编译;当使用ANSI编译标志编译时,该字符串又可以作为ASCII代码被编译。
使用sizeof(TCHAR)操作符来确定你的代码对于Unicode和ASCII都有效。当你增加指针时,记住ASCII字符是单字节的,但是Unicode字符则是双字节的。
四、调试和测试Windows CE应用程序
一组有效的调试工具能够缩短调试周期,并使你能够容易的判断出问题所在。Windows CE IDE提供了一组仿真和远程调试工具,以及一些特别的调试工具。
4-1.桌面仿真调试和测试
Windows CE开发工具包中的桌面仿真工具让你能够在任何一台运行Windows NT的机器上编写并调试Windows CE应用程序,而不必把它们
下载到Windows CE机器上。你甚至可以使用仿真器来编写一个Windows CE应用程序,而根本用不到Windows CE机器。但是,尽管你能够在仿真器上判断你的应用程序的很多性能和表现情况,最终,当你的应用程序在仿真环境中正常运行之后,你应当把它们下载到目标设备中做作后的测试和评估。根据鄙人的开发经验,在Windows CE机器上运行的效果与Windows NT上的运行效果还有很多不同,大部分情况是:更慢了。
测试时,除了测试应用程序的缺点和稳定性之外,程序的易用性也十分重要,因为大多数Windows CE机器仅有一个小的桌面区域作为访问设备,这将带来很多意想不到的问题。
4-2.远程调试和测试
除了仿真器之外,Windows CE还提供了一些工具,让你能够在应用程序运行时检测它们的性能。这些远程工具在下表中列出:
为了使用远程工具,你必须首先用一根标准串行缆线将你的台式机与掌上机相连接。
4-3.非标准调试和测试
如果你正在开发Windows CE平台上的软件,你可以使用Windows CE仿真环境以及远程工具来调试和测试你的应用程序。但是,如果你正在为其它基于Windows CE的嵌入系统开发应用程序时,你就需要自行设计测试和调试工具。幸运的是,Windows CE API提供了所有必要的编写调试器的函数。由于编写调试器比较复杂,本文暂不深究,以后有机会单独讨论该问题。
五、小结
Windows CE正在被很多人接受,而Windows CE上的应用程序还比较少,因此Windows CE应用程序将在一定时间和范围内具有不少潜力和市场。尤其是Windows CE上的
网络编程有可能成为热点。
编写Windows CE应用程序一定要"惜墨如金",提高代码运行效率。
测试Windows CE应用程序时,务必在Windows NT上测试比较成熟之后再下载到Windows CE上,过多的安装/卸载和在Windows CE机器上运行低效的应用程序有可能降低系统速度。
原文转自:http://www.ltesting.net