Windows CE

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Windows 应用程序开发

作者:

Paul Yao, Windows Embedded MVP

Paul Yao的公司

20028月

使用于

Microsoft® Windows® application development

Microsoft .NET Compact Framework

内容

简介

Win32 API

Microsoft Foundation Class Library

.NET Compact Framework

结语

简介

面对开发微软® Windows® CE .NET应用程序的众多选择可能会让你望之却步。想要建立传统图形使用者接口(GUI)的开发者可以选择微软Win32®应用程序接口(API)、对象导向式的微软基础类别库(Microsoft Foundation Class (MFC) library)或是.NET Compact Framework(有大量的程序模型及工具支持)。本份文件将会概述这些接口(API)的基本特征并使读者在选择时具有基本的知识背景。

本篇文件的主要目的是对比出在微软Windows CE(包括Pocket PC以及Windows CE .NET)上三种程序设计界面(API)的技术优点。通常,能拥有许多选择是件好事,但这也有可能导致我们要花更多时间在分析上。在选择应用程序接口的时候必须要深思熟虑,因为你所写下的程序代码不仅仅只是开发的时候要使用,也要考虑未来维护的便利性。

每个在本份文件中讨论到的应用程序接口(API)最初都是实作在微软桌上型(desktop)窗口上。实作在Windows CE .NET上的只是其子集合而已。如果你曾经在桌上型窗口下使用过其中任何一种接口,那么你将会发现其最核心的功能在掌上型窗口下一样支持。因此,你对前者具有的认知可能已足够你在后者作一个良

好的选择。不过事实上你还是没有使用掌上型应用程序接口(API)的经验,所以首先你必须决定要学习哪种。表格一摘要了这三种界面的优点及缺点,而文件的其余部分就是针对这个表格提供更详细的讨论。

表格一.三种Windows CE .NET程序接口的优缺处

Win32 应用程序接口

Win32是「Windows 32位应用程序接口」的简称。它是三种应用程序接口内历史最悠久的,可以回溯到1992年启用的Microsoft Windows NT®。然而,它实际的年纪比这个更大。Win32是以Windows 16位应用程序接口(Win16)为基础,而Win16早在1985年11月就跟Windows 1.01一起正式启用了。

其它的API皆极为依赖Win32 API。有人说过:「Win32是Windows的汇编语言。」即使你并不是选用Win32来当你的API,其它所用到的工具最后还是会呼叫Win32的函式来完成工作。这种事情在你要用到MFC或.NET Compact Framework 不支持的功能时最为明显。MFC及.NET Compact Framework都允许你在此时连结入更底层的Win32 函式。

跟Windows桌上型(desktop)版本比较起来,Windows CE .NET支援较少的Win32

函式。虽然有些人会使用「子集合」这个名词来说明Windows CE内的Win32

的地位,但是你也可以将之看作「Win32 API中最伟大的畅销作品」。设计Windows 的人为了让Windows CE .NET变小,慎重的挑选了应该包含及舍弃的函式,因此许多冗赘的函式都已被删除。例如,桌上型版本同时拥有TextOut跟ExtTextOut,但Windows 只有ExtTextOut。扮演与过去环境兼容角色的函式同样也被删除了。不支持Win16的登录(registry)函式,而只有最新的Win32版本是能被使用的。总之,Windows 上的Win32 是精简且兼容性高的,并只注重开发者会用到的工作。

Win32 API的好处

Win32 API是一条通往最小软件的路。Win32不像MFC和.NET Compact Framework需要另外一个执行期间程序(runtime)。相反的,它本身就是一个执行期间程序。

Win32 API同样也是通往最快软件的路,这使得它成为作实时执行绪的理想选择。也就是说,如果你想要执行限时(time critical)的工作,你就应该使用Win32。MFC背负了C++带来的包袱,因此有点慢。

本文件内描述的另外一个选择.NET Compact Framework,会因为将微软中介语言(Microsoft Intermediate Language , MSIL)转换成原生指令集的这个动作而造成延迟。这只会在第一次将程序代码加载内存时发生,原来就存内存内的原生程序代码可被重复使用。此外,资源回收器(Garbage Collector)也有可能会在错误的时间执行,导致在限时程序代码中造成不能预期的延迟。

Win32同时也是兼容性最高的API。只要可以在Windows 内完成的东西,一定也可以在Win32 API内完成。甚至MFC的死忠拥护者也知道当某一功能在MFC内无法支持时,他们可以依赖Win32 API来完成。在这种情况中,全域运算子:「::」是MFC程序设计师最好的朋友。

虽然.NET内并没有全域运算子,.NET Compact Framework还是可以在需要的时候呼叫到Win32的函式。与MFC不同的是,在.NET有管理的部分与Win32未受管理的部分之间呼叫需要一些额外的支出,例如启动不同的平台(P/Invoke)。因此你从.NET Compact Framework拿取Win32函式时,必需要谨慎考虑。

因为Win32不需要执行期间程序,所以它也是一个最广泛被支持的API。如果你想写个可以在任何Windows CE平台上面跑的程序,Win32这条路准没错。如果

相关文档
最新文档