Embedded 版 (精华区)
发信人: snows (花自飘零水自流), 信区: Embedded
标 题: Wince编程经验9(ZZ)
发信站: 哈工大紫丁香 (2004年03月14日09:26:54 星期天), 站内信件
你会编写Windows CE应用程序吗(收藏) 作者 《计算机世界网》
原作者姓名 《计算机世界网》
读者评分 3 评分次数 1
正文
摘自《计算机世界网》
一、概述
---- 随着移动办公和信息化的普及,笔记本电脑和掌上电脑变得越来越普及。掌上电脑
的操作平台主要有Microsoft Windows CE和3Com Palm。Windows CE秉承了桌面Windows
平台的很多优点:易于使用、可扩展性好。Windows CE也提供了丰富的编程工具。本文
将讨论如何编写Windows CE应用程序。
二、选择合适的编程工具
---- 要编写Windows CE应用程序,你需要使用Windows CE开发工具包。该工具包将成为
你的开发系统。工具包的选择由你使用的编程语言而定,你可以选择的编程语言有Visu
al 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(Compo
nent 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 C
E操作系统。
---- 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应用程序
---- 一组有效的调试工具能够缩短调试周期,并使你能够容易的判断出问题所在。Win
dows 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机器上运行低效的应用程序有可能降低系统速度
。
--
-
╭────────────────────────────╮
│ 风萧传瑟声,叶落根深处,青阶入野无归途,他乡不知顾 │
│ 泣下问和谁,叹者行已暮,寒眉傲骨今尚在,奈何入凡土 │
╰────────────────────────────╯
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.154]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.507毫秒