Embedded 版 (精华区)

发信人: embeddedsys (选择·喜欢), 信区: Embedded_system
标  题: 将Windows 95 的程序移植到Windows CE         Zzz
发信站: 哈工大紫丁香 (2003年03月27日08:40:58 星期四), 站内信件

发信人: encarta (知更鸟), 信区: Embedded
标  题: 将Windows 95 的程序移植到Windows CE
发信站: BBS 水木清华站 (Thu Aug 10 21:35:47 2000)

引言
  许多Windows 95下的应用程序可以移植到MS Windows CE上,比重新编写软件要容易
的多。移植到Windows CE上时需注意的主要问题有:
MS Win32应用程序接口(API)和Windows CE应用程序APIs之间的差别
存储极限和溢出恢复
能量限制
各种各样硬件的特点和限制
测试与调试之间的差别
Win32与 Windows CE APIs之间的差别
  Windows CE API与Win32 API有几点主要区别:
更小。只支持Win32 API的一个子集,支持的子集中的组件减小了。例如,支持更小的窗
口类型,但支持更多的颜色和字体。
具有Windows CE特殊扩展。许多扩展,包括触摸屏和通告,支持不同设备的硬件权能,
但有些,如命令条,代替了Win32中的相应组件。
异常处理中有限制。支持Win32结构的异常处理,但Windows CE不支持C++的异常处理。

  从PC平台把Win32应用程序移植到Windows CE上时,主要问题通常是API更小。应用
程序需要满足Windows CE API的限制和目标设备的权能。
标准MFC和Windows CE MFC的差别
  MS基础类库已成为先进Windows应用程序开发的日益受欢迎的工具。MFC为图形用户
界面、数据处理系统和系统界面提供了鲁棒而全面的类集。
  Windows CE的MFC设计得与标准MFC的功能及组件紧密匹配,但每个类所支持的组件
与现有类之间有重要区别。除此而外,Windows CE MFC 中有一类,在Windows CE平台中
是唯一的。例如,Windows CE中一个重要的新特点就是命令条控制。
  如果应用程序是用标准MFC编写的,就需要仔细检查类、方法和程序中的特点,要证
实它们与Windows CE中的MFC兼容。
存储限制
  一般来说,Windows CE设备比台式PC机的RAM小许多。另外,大多没有磁盘驱动或其
它大容量存储设备。大多数情况下,要将应用程序移植到Windows CE中需要减小它的大
小。
  移植时,要主要最常用的组件。MS Word和MS Excel就是将应用程序组件减小而仍保
持其基本功能的例子。
应用程序应尽量少用存储器的内存。也必须能和系统协调,以处理内存不足的情况。
能量限制
  Windows CE设备可能有极为有限的能源,如手持PC(H/PC),靠两块AA电池运行。
所写程序应使消耗能量最小。为了节省能量,许多Windows CE设备在一定时间内不用时
自动关闭。Windows CE应用程序该是能在断电时停止处继续下去。如果运行程序时能量
严重不足,必须能很好处理这种情形。
硬件特点:
  设计出的Windows CE程序一般运行在比PC机小且功能弱的设备上。如:
屏幕小,象素少,可能不支持彩色。
CPU更慢
用户接口硬件如键盘等可能不够灵活
  另一方面,一些设备的硬件可能不是标准PC上的,如H/PC上的红外发收装置。所以
千万不要认为所有基于Windows CE的设备都与其它PC很相似。头脑中一定要强烈意识到
目标设备的硬件问题。
  将程序移植到多类设备上时,需要找一个最低通用标准以确保程序成功移植到目标
平台。尽管仿真是重要的开发工具,应用程序必须最终在实际设备上测试以确保执行正
确。
测试与调试
  开发Windows CE应用程序与开发其它的Win32程序相似,但所用的测试与调试方法却
极为不同。如为一个标准Windows CE目标(H/PC)开发,则开发和测试工作大多可在Wi
ndows CE仿真环境下用你的开发工具来作。而如果为非标准平台开发(用户嵌入应用程
序),则需要考虑证实程序正确性的另外方法。Windows CE API包括调试适于调试的界
面(DebugActiveProcess和DebugEvent),可用来产生嵌入系统调试工具。针对目标硬
件和程序的不同,也可用Windows CE的Remote API组件来辅助调试。
  总之,一定要将应用程序在所有要操作的系统类上仔细测试,不要指望仿真环境能
提供足够的测试环境。
应用程序移植到Windows CE的系统方法
  应用Win95移植程序到Windows CE的系统方法应能使程序至少是可以运行起来。
  这一部分不是为了详细描述必要步骤,而是阐明主要问题。
移植Windows CE API
  如果程序是16位基于Windows的,首先要将它移植到Win32。Win32一般支持16位Win
dows功能,以提供后向兼容,Windows CE却不能。
  下一步,程序中所有的API基准--包括函数、信息和相关数据类型,然后或者修改或
者替代与Windows CE API 不兼容的部分。举例如下:
有一些Win32函数根本不支持--16位Windows函数根本不支持。替换这些函数,或避开使
用。例如MoveTo和LineTo画图函数在Windows CE中不能被支持,可替换为PolyLine函数

一些Win32函数用等价的Windows CE函数替代了。如工具和菜单条组合成了一个命令条,
有一个新的API。
一些Win32程序被支持,但受限制。可能有一个或多个参数无效了。另外可能有的参数选
项减少了。例如,CreateWindow 和CreatWindowEK函数都支持,但只支持Win32窗口类型
子集。
被支持的数据类型可能需要修改。支持所有Win32必须的结构,但有些数不能用了。其它
结构可能不会接受全部选项。
一些消息不被支持--包括许多WM_*和EM_*消息。有一些支持的但修改了。如wParam和Ip
aram的内容不同了。加上一些Windows CE特别消息,如WM_ HIBERNATE。
Windows CE内存管理
  内存数量是有设备决定的,所以要注意目标平台的容量。用Windows CE,大容量存
储器件(如临时文件)和用RAM没有任何区别。
  Windows CE程序中尽量少用内存或大存储器件。注意费内存的组件如位图,能否简
化或去掉。除非必要,最好不用临时存储器件。有些可重写编码以减小内存消耗。但速
度会减慢,这一点也许可以接受。
  如果内存紧张,Windows CE提供了一种减小内存开支,重新存储。关键在于WM_ HI
BERNATE消息,非标准Win32中的消息。
  注意:好的程序必须用WM_ HIBERNATE句柄,并当内存吃紧时进行协调。
管理可用的能量
  许多Windows CE设备以电池供电,能源有限。
  运行中的CPU要消耗大量的电能,所以应避免不必要的CPU循环的编码。如PeekMess
age函数尤其应慎用,它可以令CPU不停运转。
  当电源不足时,Windows CE会显示警告信息,但不给应用程序发警告。

--

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.250.5]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.715毫秒