admin管理员组

文章数量:1530961

2024年7月20日发(作者:)

第二章:Windows CE .NET应用程序开发简介

2.1 开发环境与工具

微软(Microsoft)提供了两个整合的开发环境来开发Windows CE .NET控制器的应用程序:

Visual Studio .NET 和 eMbedded Visual C++。他们都是由一套整合的窗口(windows), 工具

(tools), 选单(menus), 工具列(toolbars), 目录(directories),和其它组件所组成,并用以帮助我

们建立,开发,测试,和侦错Windows CE .NET的应用程序。本书所介绍的是目前最新版

的Windows CE .NET且使用的应用程序发展机器Wincon-8000亦是使用Windows CE .NET

为其嵌入式操作系统。是故本书所介绍的开发工具亦是目前最新支持Windows CE .NET的

Embedded Visual C++ 4.0和Visual Studio .NET 2003。以往用Embedded Visual C++ 3.0和

Embedded Visual Basic 3.0 或更旧的版本所开发出来的应用程序不能在Windows CE .NET运

行,只能在其Windows CE 3.0上运行。

Embedded Visual C++ 4.0

我们很快的先看一下以下 eMbedded Visual C++ IDE(Integrated Development Environment)整

合开发环境的一些画面。如果大家曾经使用过 Microsoft Visual C++ 发展应用程序, 大家将

发现 eMbedded Visual C++ 提供一个很类似的发展环境。 当然,与 Visual C++ 不同的是

eMbedded Visual C++ 提供了一些独特的工具和资源以用来开发 Windows CE .NET 的应用

程序。 我们很快的先看一下以下 eMbedded Visual C++ IDE(Integrated Development

Environment)整合开发环境的一些画面。

图 : 使用eMbedded Visual C++ IDE开启一个新的项目

图 : 使用eMbedded Visual C++ IDE 编辑资源(resources)

图 : 使用eMbedded Visual C++ IDE 编辑程序代码,Compile, Build, and Debug

如果读者熟悉Visual Studio的Visual C++,你会发现 eMbedded Visual C++ 的整合开发环境

(IDE : Integrated Development Environment)非常相似。 eMbedded Visual C++ 包含了一些主

要功能和工具如下表。下一章我们将详细介绍如何安装和使用eMbedded Visual C++。

名称

Project Workspace

Text editor

Resource editors

Compiler

Windows CE device

emulators

Platform Manager

Debugger

AppWizard

Source Browser

ClassWizard

Windows diagnostic tools

功能

组织管理项目(projects)和项目的组件(components)

编辑程序代码

设计和修改资源(resources),例如对话盒(dialog boxes),选单

(menus),标记(icons)等

编译 C 或 C++ 的原始程序代码(source code)

在PC上仿真和测试应用程序的运行

在目标机器(target device)实地测试和运行应用程序

侦错器

建立新的应用程序

在程序中检查和编辑函式(functions)和类别(classes),并快速得知

他们之间的关系

自动维护类别的程序代码

例如Windows CE Remote Spy (),提供更多的侦错功能

Online documentation and 线上技术手册

help

Visual Studio .NET 2003

透过Smart Device Extensions (SDE) for Microsoft Visual Studio .NET可让我们使用.NET的技

术在支持.NET Compact Framework的Windows CE .NET控制器(例如Wincon8000支持.NET

Compact Framework)上开发我们的应用程序。而Windows CE .NET所使用的语言和开发工具

和在桌上型PC开发.NET的应用程序是一样的,那就是Visual Basic .NET(或Visual C#)和

Visual Studio .NET。在最新的Microsoft Visual Studio .NET 2003以后(含)的版本,SDE已经

内建整合在Microsoft Visual Studio .NET开发环境中,如果你使用的是Microsoft Visual

Studio .NET 2002年版,你必需加装SDE这个套件,而Microsoft Visual Studio .NET 2002年

以前的版本是不支持.NET应用程序的开发。如下图所示,只要在你建立新项目时选择[Smart

Device Application],接下来所使用的开发工具或开发方式,都和开发桌上型微软操作系统

(desktop Microsoft Operating System)(ex: Windows NT/2000/XP)的.NET应用程序一样。

2.2 使用Embedded Visual C++ 开发你的应用程序

安装eMbedded Visual C++ 4.0:

本书所附光盘有收录eMbedded Visual C++ 4.0及SP1(Service Pack 1)或SP2(Service Pack 2) for

eMbedded Visual C++ 4.0,读者亦可自行到微软的下载中心

(/downloads/)键入” eMbedded Visual C++”来搜寻最新版

的eMbedded Visual C++并下载。

安装需求

操作系统 : Windows 2000, Windows XP, Microsoft Windows® 2000 Professional SP2,

Microsoft Windows 2000 Server SP2, or Microsoft Windows XP Professional

桌上型计算机使用Pentium-II 450 MHz以上处理器

200 MB以上的硬盘可用空间

CD-ROM drive

VGA或 Super VGA (800 x 600 or larger)

Mouse

注册码

TRT7H-KD36T-FRH8D-6QH8P-VFJHQ

激活eMbedded Visual C++ 4.0

待你成功的安装eMbedded Visual C++ 4.0在你的PC后,从[开始]菜单的[程序集]中可以

找到[Microsoft eMbedded Visual C++ 4.0]如下图,直接点选来执行以激活eMbedded

Visual C++ 4.0

待eMbedded Visual C++ 4.0成功激活后会显示画面如下图。

接下来,我们将介绍使用eMbedded Visual C++ 4.0开发应用程序的一些基本操作。

管理项目(Projects)和工作区(Workspaces)

使用eMbedded Visual C++,是在工作区(Workspace)中开发应用程序。你可以同时建立

一个项目(project)和工作区(workspace),或者建立一个工作区(Workspace),然后再把一

个或一个以上的项目加入,接着,就可以去开始组合(汇编)应用程序。建立一个工作区

(workspace)后,你可以在一个现存的项目和子项目中加入新的项目、新的规划设定。

工作区(workspace)是一个发展项目的容器。当你建了一个新的平台时,同时也建立了

一个工作区(workspace)。使用Project view去看并获得存取项目中不同的组件。工作

区(Workspace)可以容纳多个项目,包括了子项目,但只能有一个平台。

项目(project)是一个结构或规划和一群产生应用程序或最终二进制文件的档案

子项目(subproject)是依靠另一个的项目的项目。这其间的附属物可以由分享档案构

成,这些分享档案需要先被建立在这子项目中, 或者它可以包括必需要在子项目中先

更新的分享资源。

建立新项目

建立项目(project)就是在[File] 选单中选择[New],于[Project]页签中,选择你想建立的应用程

序类型。你可以同时建新的项目(project)和工作区(workspace)。你可以建立一个空的项目或

是使用eMbedded Visual C++提供的精灵针对你的执行文件或其它的二进制文件的档案去设

定框架(framework)。你建立一个项目的同时也开启了一个工作区(workspace),你可以选择把

项目加入已存在的workspace,或是建立一个新的工作区(workspace)如下图,同时你也必须

选定你的应用程序将会在那种CPU的Windows CE装置上运行。

下面的表格描述Windows CE应用程序精灵。

应用程序精灵(Application

Wizard)

WCE Application

WCE ATL COM AppWizard

WCE Dynamic-Link Library

可建立一个空的项目、标准的Windows CE应用程序、或

是Windows CE典型的" Hello World " 应用程序。

建立Windows CE的ATL COM对象

建立一个空的或是标准的动态链接库(DLL: dynamic-link

library)

项目(Project)类型

WCE MFC ActiveX Control Wizard 建立一个使用MFC的Windows CE ActiveX 制控项

(control)

WCE MFC AppWizard (exe) 的Windows CE应用程序

WCE MFC AppWizard (dll)

WCE Static Library

建立一个使用MFC的Windows CE动态链接库(DLL:

dynamic-link library)

建立Windows CE静态函件库 (static library )

当你使用精灵建立项目时,精灵针对应用程序产生的来源和标头檔,就如同描述每个的档案

内容的””一样。此外,MFC和ATL应用程序产生一组完整的以MFC 或 ATL的

类别为基础的的来源檔(.C/.C++),标头档(.h),和资源档(.res)。精灵提供选项使你可以自订应

用程序的来源文件(source file)和标头启始档(header starter file)。例如,假如你建立了一

个MFC的应用程序,你可以选择你的应用程序是否支持MFC document/view的架构。假

如你建了一个空的Windows CE应用程序、一个空的动态联结函式库、或是Windows CE

不含前置编译标头文件的静态函式库时,应用程序精灵并不会产生标头档(head file)。

建立一个新的项目(project)和新的工作区(workspace)

1. 在[File]选单中选择[New]

2. 在[Projects]页签中选择应用程序型态

3. 于Project name字段中键入项目的名称

4.

5.

6.

7.

8.

9.

在Location字段中,新的项目档放在预设的磁盘驱动器和路径,但你可以改变它。

点选Create new workspace选项。

于CPUs中,选择将建立的项目所在的Windows CE装置硬件平台。

点选OK

在精灵中,选择你的应用程序所须呈现的特性。完成选项后点选Finish。

在New Project Information对话框中,确定你新的骨干项目的规格。

建立workspace后,你可以加入新的或已存在的项目,也可删除工作区(workspace)中已

存在的项目。

加入一个新项目到现存的工作区

1. 在[File]选单中选择[New]

2. 在[Projects]页签中选择应用程序型态

3. 于Project name字段中键入项目的名称

4.

5.

6.

7.

8.

9.

在Location字段中,新的项目档放在预设的磁盘驱动器和路径,但你可以改变它。

点选Add to current workspace选项。你可以选择勾选框架的相依性

于CPUs中,选择将建立的项目所在的Windows CE装置硬件平台。

点选OK

在精灵中,选择你的应用程序所须呈现的特性。完成选项后点选Finish。

在New Project Information对话框中,确定你新的骨干项目的规格。

加入一个现存新到工作区

1. 开启你想加入项目的项目工作区。

2. 在项目Project选单中,点选Insert Project into Workspace,

3. 在Insert Projects into Workspace对话框中,浏览并找出你想加入的项目所在位置,

然后点选这个项目档欲加入的工作区(workspace)。

4. 点选勾选盒的相依性并选择其它表列在相依性对话框中项目的名称。

删除工作区(workspace)中的项目

在FileView页签中选择项目然后按下DELETE键。注意,在删除此项目同时,也从

其它项目移除这个子项目,和从其它工作区移除了这个项目。

删除项目的配置

1. 在Build选单中,点选Configurations选项

2. 在配置设定对话框中,展开项目并删除。

3. 选择你要删除的配置设定,然后点选Remove。

加入控件(Controls)到对话盒(Dialog Box)

对话框边辑器在控制工具列中提供了标准的控制型态。系统预设,当对话编辑器被开启时,

显示控制工具列如下图。

当你在对话盒中增加或改变控件的位置,对话框编辑器针对特别类型的控制器,给予它标准

的大小。 同样地你拖曳控制器,控件的位置以虚线被画出轮廓,但是最后的位置可能取决

于导览或边框,或者是你是否开启布局控制格。此外你也可以使用对话盒工具列的一些命令

来对控件做对齐、置中、排列和调整大小等。除了在控件工具列中预设的控件,你可在对话

框点击右键,然后点选Insert ActiveX Controls,去增加一ActiveX控件。要改变控件的

属性,例如控件的ID或标题,便是点选了控件后,再于View选单中选择属性。属性包括

了控件的ID,内文调准,型态的设定。

建置应用程序(Building an Application)

建置应用程序涉及了前置处理器(preprocessor), 编译器(compiler),和连结器(linker):

前置处理器透过翻译宏、操作数、和指示来准备编译器的来源档(source file)。

编译器建立一个含有机器码、连结程序指示器节、外部参考和函式/资料名的对象文

件(object file)。

The linker combines code from the object files created by the compiler and from

statically-linked libraries, resolves the name references, and creates an executable file. 连

结器则是连结由编译器创造的对象文件和函式库以产生执行档(.exe)。

下面的图表显示在eMbedded Visual C++开发应用程序的流程:

设定连结器的选项(Setting Linker Options):

1.

2.

3.

4.

5.

于Project选单中点选Settings

然后在Settings for中选择设定(configuration)

在项目树状图中,于Settings for中点选某个项目

点选Link页签,显示出可选择的项目如下图。

为了把对象文件或标准的函式库传给连结程序,在对象/函式库模块内文方块中指定档

名。你能够以文件名称指定绝对或者相对的路径, 并且能够把万用字符用于文件名。

指定档案的路径

在eMbedded Visual C++的[Tools]的[Options]中,可指定项目中的文件寻找路径。包括可对下

表各种型态的档案设定寻找路径表:

型态的档案(File type)

Executable files执行档

Include files含括檔

Library files函式库档

Source files来源档

设定

指定公用程序位置, 例如编译器(CL, CLARM, CLMIPS,等等) ,

NMAKE,炼结程序,和 BSCMAKE 。

指定编译器应该在哪里寻找概括档 (例如#include

)。

指定连结程序应该在哪里寻找函式库以解决外部参考。

指定侦错器应该在哪寻找来源档, 例如Microsoft Foundation

Class Library和微Microsoft run-time library。

在目录设定中存储了路径信息,这允许你改变这些设定。你能够改变在这些设定中列的路径

和在eMbedded Visual C++搜寻他们的次序。Microsoft eMbedded Visual C++依他们在这些列表

(目录)中出现的次序的搜寻资料夹如下图。

待设定好这些常用设定后,就可以成功的建置(build)出应用程序的运行文件(.exe)并下载到

Windows CE装置来运行。

2.3 使用Visual Studio .NET开发你的应用程序

The Visual Studio .NET

Visual Studio .NET整合发展环境已支持开发智能型装置例如掌上型计算机、个人数字助

理(PDA)等(smart device)应用程序的工具。使用这些工具和.NET Compact Framework,你能够

建立(create)、建置(build)、除错(debug)、和布署(deploy)在个人数字助理( PDAs ) 、行动电话、

和其它资源受限装置等透过.NET Compact Framework执行的应用程序。.NET Compact

Framework是.NET Framework的子集,应用程序开发者可以使用相同和熟谙的Visual

Studio .NET技术来开发Windows CE .NET装置的应用程序。 你可以使用已获得的Visual

Studio .NET技术(以)建立用于掌上型计算机2000 , 掌上型计算机2002 , 或者任何以Windows

CE .NET-based的装置。Visual Studio .NET 2003年版本(含)以后已支持应用程序开发者在

Visual Studio .NET使用Visual Basic .NET和Visual C# 程序语言来撰写应用程序;而这些应

用程序则必需透过.NET Compact Framework来开发和执行。开发环境对.NET Compact

Framework支持已经由Visual Studio .NET来完成,而Windows CE .NET装置同时也必需支

持.NET Compact Framework以提供使用使用Visual Basic .NET和Visual C# 程序语言开发的

应用程序可在装置上执行。Visual Studio .NET是一个必须付费购买的开发工具,安装在个人

计算机的系统需求如下表:

安装需求

操作系统 : Windows 2000, Windows XP, Microsoft Windows® 2000 Professional

SP2, Microsoft Windows 2000 Server SP2, or Microsoft Windows XP Professional

桌上型计算机使用Pentium-II 450 MHz以上处理器

200 MB以上的硬盘可用空间

CD-ROM drive

VGA或 Super VGA (800 x 600 or larger)

Mouse

Visual Studio .NET有企业版(Enterprise)、专业版(Professional)、教育版(Education)和免费试用

版(Try Version)等。教育版和免费试用版不支持开发智能型装置应用程序,一般都使用专业

版来开发智能型装置应用程序。Visual Studio .NET的试用版可在以下网站取得:

/team/vsrapideval

Visual Studio .NET的安装可参照其网站或光盘所附的安装说明按步骤安装完成。安装完成可

从开始菜单的程序集中的[Microsoft Visual Studio .NET 2003]如下图来激活Visual

Studio .NET。

.NET Compact Framework

Microsoft® Windows® CE .NET是Windows CE 3.0的后继版本,它是一个小、简洁、可

靠、实时和多任务的嵌入式操作系统。而".NET"代表的是它实现(支持)了.NET的技术。

Windows CE .NET版本的.NET技术,我们叫它做.NET Compact Framework。顾名思

义,”Compact”表示.NET Compact Framework是.NET Framework的简洁版。简单来说,.NET

Framework主要由二大部份所组成,Common Language Runtime(CLR)和.NET Framework class

library。它提供了一个新的应用程序运行平台,一个高度管理的运行平台。使用者所开发

的.NET Framework应用程序在运行时是透过.NET Framework的运行平台展现出该应用程序

的功能,并且被.NET Framework的运行平台严格控管以降低应用程序出错而导致号系统不

正常的状况。另外,.NET Framework也大大的简化了应用程序的开发和部署(deployment),

且开发出的应用程序是与硬件无关(hardware independent)而可跨机器平台(cross machine

platform)执行的。

Common Language Runtime(CLR):

Common Language Runtime(CLR)可看成是一个运行(runtime)或一个代理者程序(agent),负责

管理程序代码的执行,管理内存(memory management), 管理执行绪(thread management), 转

换和检查型别(type checking)等确保系统强固,稳定,和安全。所以,那些透过Common

Language Runtime(CLR)运行的应用程序或程序代码(用.NET Compact Framework及Visual

Basic .NET或Visual C#开发出的应用程序),又称做”被管理的程序代码”(managed code)。反

之,那些不需透过Common Language Runtime(CLR)运行的应用程序或程序代码(eMbedded

Visual C++ 开发出的应用程序),又称做”不被管理的程序代码”(unmanaged code),或称做本

机码或内驻码(native code)。

.NET Framework class library :

.NET Framework class library是由许多对象导向(Object-Oriented)的类别(class)、程序接口

(interface)、和资料型别(type)所组成,以提供了以下功能让应用程序开发者使用简单并快速

的开发各种应用程序:

呈现基本资料型别(base data types)和例外处理(exceptions)

封装(Encapsulate)数据结构(data structures)

完成处理输出入(Perform I/O)

存取加载型别(loaded types)的信息

引用.NET Framework的保全(security)稽核

提供资料存取和图形使用者接口(client-side GUI)

.NET Compact Framework 的类别(Classes)

参考技术文件同样也使用.NET Framework类别函式库的使用参考文件。要查看.NET Compact

Framework是否有支持.NET Framework类别函式库中的某个类别或者成员。可在参考技术文

件中的"Requirements"叙述的”Platforms” 中是否有列出” .NET Compact Framework”。以下图

为例,在技术文件说明如何使用这个类别(class)时,也会列如是否” .NET Compact Framework”

也有支持这个类别(class)。但是要注意的是,技术文件中所附的范例程序但并未在.NET

Compact Framework中试过,有可能完全兼容可以运行,也有可能需做小部份修改才能运行。

开启新项目

正如同你在Visual Studio中开启任何其它新项目一样,是透过开启新项目对话盒来开启,然

后选择一种项目类型和样板(template)如下图。

在Visual Studio .NET为智能型装置建立一个新项目的详细步骤如下:

1. 在Visual Studio .NET的档案[File]选单中,点选新增[New],然后点选项目[Project]

后将出现开启新项目对话盒下图:

2. Under Project Types in the New Project dialog box, click Visual Basic Projects or Visual

C# Projects. 在新项目[New Project]的对话框中于项目类型[Project Types]内,点选

Visual Basic Projects 或Visual C# Projects来选定要使用Visual Basic .NET或Visual

C# .NET来撰写应用程序。

3. 在路径位置[Location]中键入或使用浏览[Browse]来指定新项目建立相关档案的位

置。

4. 在名称[Name]中键入指定新项目名称。

5. 在模板[Templates]中,选定智能型装置应用程序(Smart Device Application)

6. 点选[OK]进入以下画面:

7. 选择目的装置(target)的平台(platform),可选择Windows CE .NET 平台或Pocket PC

平台。智能型装置项目中的平台是一组.NET Compact Framework针对一大群相关装置

的功能性去设计规划的。Visual studio .NET 2003支持两种平台: Windows CE .NET和

掌上型计算机(Pocket PC)。Windows CE .NET平台设计为一般Windows CE .NET项目

提供功能性。而Pocket PC平台被设计为专门在Pocket PC上执行的项目提供功能性。

以本书所使用的Windows CE装置为例,本书所使用的泓格科技的Wincon-8000的应用

程序开发必须选择Windows CE .NET平台而非掌上型计算机(Pocket PC)平台。

8. 选择项目型别(project type)。每一个平台都支持一些专门模板(templates)。例如,

Windows CE .NET平台提供了专用的模板来发展Windows CE .NET装置的窗口应用

程序(Windows Application)、类别函式库(Class Library)、无窗口的操作台应用程序

(Console application),或者一个空白项目(Empty Project)。

Windows CE装置应用程序与桌上型个人计算机应用程序比较

Windows CE .NET版本的.NET技术,我们叫它做.NET Compact Framework。顾名思

义,”Compact”表示.NET Compact Framework是.NET Framework的简洁版。因为Windows CE

device所能提供的资源有限和一些系统的限制,有些类别(class)和控件(control)在.NET

Compact Framework是不支持的,如下图所示,图中阴影部份表示.NET Compact Framework

不支持的类别。

同理,当我们使用Visual Studio .NET的开发环境开发Visual Basic .NET或Visual C# .NET

的Windows CE装置的应用程序时有些控件(control)也不支持,如下图所示:

虽然开发桌上型计算机应用程序和开发都是使用Visual Studio .NET,但是在开发Windows CE

装置应用程序时还是有一些需要注意的地方。例如:

Visual Studio开发环境提供额外附加的工具来支持连接和侦错远程的Windows CE装

置。

除了当你建立一个项目时要选择一种项目类型和样板(template)以外, 你尚须指定一个

装置来执行和侦错应用程序。装置可能是连接到开发计算机的任一个实体Windows CE

装置、网络装置、或是一个在开发计算机上执行的装置仿真器(device emulator)。在[Tools]

选单中,点选选项[Options],然后点选装置工具[Device Tools]将出现以下画面供你选

择装置和侦错方式。

.NET Compact Framework 支持较少的类别(classes)或类别的成员(members),例

如.NET Compact Framework不支持Web forms、remoting、 messaging、management

和printing等类别,并且通常会有不同的类别列举(enumeration of classes)。这可以使

用Intellisense或Visual Studio的对象浏览器(Object Browser)来检视。

.NET Compact Framework 支持有限的COM 组件的交互引用(interoperating),同

时.NET Compact Framework不支持使用托管码(managed code)来开发COM 组件,也

不支持ActiveX 控件(controls)的交互引用。

另外例如显示(display)的大小、电源管理、内存限制等装置硬件的特性也必须列入开

发应用程序时的考量。

2.4 各种开发工具的比较

前二章节已经介绍过在Windows CE装置上开发应用程序的工具,包含使用eMbedded

Visual C++ 或在Visual Studio .NET 使用Visual Basic .NET或Visual C# .NET来开发应用程

序。本章将讨论这两种开发方式的差别和优缺点。使用eMbedded Visual C++开发出的应用

程序代码又称为本机码(native code),而使用Visual Studio .NET的Visual Basic .NET或Visual

C# .NET开发出来的.NET Compact Framework应用程序代码又称为托管码(managed code)。

本机码(native code)

本机码应用程序是使用一套特定软件平台的应用程序开发接口(APIs)来开发,并且被编

译成一个特定处理器(microprocessor)的目的码(object code)或机器码(machine code)。一般情

况下,本机码提供较高的效能(performance)和最小的资源需求(footprint),但是被编译好的本

机码或是执行档(executable)却只能在此特定软件平台和特定处理器上运行。以本书范例装置

为例,用eMbedded Visual C++在泓格科技Wincon-8000上开发应用程序时,是使用Windows

CE .NET特定的软件平台和Windows CE .NET所提供的接口(APIs)来开发,并编译成特定

ARM4处理器的机器码。此外,开发本机码应用程序常需要应用程序开发者必须自行处理类

似内存管理、资源(resource)管理、保全性(security)管理等,而这些通常必须要由经验丰富的

C++应用程序开发工程师来处理。

托管码(managed code)

托管码应用程序是使用一套运行环境(run-time environment)的应用程序开发接口(APIs)

来开发。一般情况下,托管码应用程序的开发会比较简单和快速,并且可跨软件平台和处理

器来运行,所以开发出的托管码也能重新使用(reuse)和有较高的可移植性(portable)。另外,

内存管理、资源(resource)管理、资源收集(garbage collection)、保全性(security)管理等琐碎的

工作都由运行环境(run-time environment)来处理,应用程序开发工程师不须费心处理。托管

是透过目标机器端的实时编译器(Just-in-Time 码应用程序在目标机器(target device)上运行时,

compiler)来实时把托管码编译成目标机器码后在目标机器上执行。以本书范例装置为例,使

用Visual Studio .NET的Visual Basic .NET或Visual C# .NET开发泓格科技Wincon-8000的应

用程序时,是使用Visual Studio .NET的.NET Compact Framework这个运行环境(run-time

environment),开发完成的托管码下载到Wincon-8000上执行时是透过支持.NET Compact

Framework 的Windows CE .NET操作系统中的实时编译器(Just-in-Time compiler)来实时编译

使用Visual Basic .NET或Visual C# .NET开发出的托管码。

选择适当的开发方式来开发应用程序

介绍到此,读者应对本机码应用程序和托管码应用程序有初步了解。一般来说,如果效

能和控制是应用程序的最大需求时,开发工程师应使用eMbedded Visual C++开发成本机码

应用程序。相反地,若开发工程师需要的是快速开发完成的工具时,Visual Studio .NET 则

是最佳的选择。下表列举比较了使用标准Win32 API或MFC来开发本机码与使用.NET

Compact Framework来开发托管码的优缺点。应选择本机码或是托管码来开发应用程序,牵

涉到的选择考量非常广泛,包括开发工具、平台支持、应用程序需求及应用领域、开发者习

惯、和共享及时效性等。

API

优点

最简化和最快的运行档(.exe)和动态连结函式库

(DLL)

使用最少的内存

装置驱动程序必须用Win32开发

控制平台程序(control panel applets)必须用Win32开

外观延伸(shell extensions)例如软件输入平板

(Software Input Panel)、使用者接口表层(user interface

skin)、软件时钟等,必须用Win32开发

不需任何运行(runtime),直接在 Windows CE .NET

上运行

缺点

艰涩难懂的低阶

API.

资源及对象的清除

释放必须由程序自

行处理,一不小心常

会造成内存溢漏

(memory leaks)

程序化

(Procedure-oriented)

的API,没有对象导

向(object-oriented)的

观念

Microsoft

Win32 SDK

(C / C++)

MFC

(C++)

支持对象导向(Object-oriented),包括继承

(Inheritance)、封装(Encapsulation)、多形

(Polymorphism)和函式重载(function overloading)等

容器类别(Container classes)支持数组(arrays)、链接

(lists)、对象对应(object maps)和简化的数据处理(data

handling)

型别安全(Type safety)

Embedded Visual C++提供完整的MFC原始码

强大的工具支持,一系列的精灵Good tool support. A

set of (wizards)来协助加入例如窗口讯息处理

(message handlers)、虚拟函式(virtual functions)、窗

体(forms)和类别(classes)等。

简单易懂的API

支持对象导向(Object-oriented),包括继承

(Inheritance)、封装(Encapsulation)、多形

(Polymorphism)和函式重载(function overloading)等

容器类别(Container classes)支持数组(arrays)、链接

(lists)、对象对应(object maps)、简化的数据处理(data

handling)、紧凑表(hashtables)、对照表(dictionaries)

和堆栈(stacks)等

型别安全(Type safety)

名称集(Namespaces)

自动资源回收(garbage collection)以避免忆体溢漏

(memory leaks)

具可移植性(Portable)的机器指令集(MSIL : Microsoft

Intermediate Language / CIL : Common Intermediate

Language)提供运行档(.exe / .dll)。

迅速开发网页服务客户端(web service clients)

虽然代为处理部份

的资源及对象的清

除释放,但某些时候

仍须由程序自行处

理,一不小心常会造

成内存溢漏(memory

leaks)

.NET

Compact

Framework

(C# and

Visual

Basic® .NET)

频繁的托管码

(managed code)实时

编译使得执行效率

最小

常需使用包装

Win32的方式来使

用COM对象的接口

函式

未提供原始码

支持XML

优异的工具支持,例如,整合的窗体设计师(Integrated

Forms Designer)可自工具盒(toolbox)拖曳(drag &

drop)项目(items)来设计窗体,并可自动产生程序代

结论

Win32 SDK是操作系统所提供的应用程序开发接口(API),可用来开发应用程序

(applications)、驱动程序(drivers)、控制面板程序(control panel applets)和动态连结函式库(DLLs)

等,并且开发出来的程序可以有最小的档案大小。也因为Win32 SDK是操作系统所提供的

最低阶的应用程序开发接口(API),使用Win32 SDK开发应用程序需要较长的开发时间。当

要开发驱动程序(drivers)、控制面板程序(control panel applets)、低阶程序代码或实时程序代

码(real-time code)等,Win32 SDK是唯一的选择。至于要开发使用者应用程序(user application)

时,除了Win32 SDK外,也可使用MFC或.NET Compact Framework。我们可以把一台

Windows CE装置看成是由层次化的软件所组成,最底层是使用Win32本机码所开发出的驱

动程序。在这层上面是由多个类似资料解析(data-analysis)、DLL和COM组件等的中介层

(middle-tier)程序所组成,这些可用Win32本机码、MFC或ATL来开发。而在最上层的则是

提供使用者接口和图型窗口接口的应用程序,这些使用者应用程序除了使用Win32、MFC

或ATL来开发外,更可以使用.NET Compact Framework来开发。

Windows CE版本的Microsoft Foundation Classes(MFC)是由两个DLL所提供,

和支持OLE (COM)的。简而言之,MFC是对Win32 APIs

的包装(wrapper),支持近160种的类别(classes),包装了例如窗口(windows)、检视(views)、

文件(documents)、数组(array)、字符串(string)、插座(socket)和GDI等对象。当我们安装好

eMbedded Visual C++后,可以在”Program FilesWindows CE

Toolswce410STANDARDSDK_410MfcSrc”里找到相关的MFC原始程序代码。Windows CE

版本的Microsoft Foundation Classes(MFC)的相关使用文件可以在微软的参考技术文件中找

到专门介绍Windows CE版本的Microsoft Foundation Classes(MFC)的使用方法。MFC应用程

序必须使用eMbedded Visual C++来开发。

至于.NET Compact Framework已在上一章节作一简单介绍,本书主要介绍如何使用

eMbedded Visual C++来开发Windows CE装置应用程序,如何使用.NET Compact Framework

来开发Windows CE装置应用程序将在笔者的下一本书作更详尽的介绍。而在本书介绍如何

使用eMbedded Visual C++来开发Windows CE装置应用程序时,又着重于介绍使用Win32

API,原因是Windows CE所提供的MFC与其它Windows操作系统(例如Windows XP/2000

等)几近相同,笔者将不再重复交待。

开发Windows CE装置的应用程序的注意事项

本章最后比较开发Windows CE装置的应用程序和开发一般desktop Windows(例如Windows

95/98/NT/2000/XP) 的应用程序不同之处和要注意的事项如下表 :

CPU Windows CE装置的CPU效能通常都

比PC来的慢,且没有协同处理器

(co-processor),所以应避免复杂的数学

运算和图型显示

屏幕 Windows CE装置通常使用小尺寸的显

示屏和较小的分辨率(resolution),因此

应用程序的窗口大小比须配合硬件的

限制

输入装置 Windows CE装置常频繁的使用触摸屏

或输入笔来做为使用者输入工具,因此

应用程序的开发必须了解使用上与鼠

标的差别与讯息的处理(message

handling)

资源 Windows CE装置因资源有限,例如内

存及外围等,所以开发应用程序时必须

注意资源的取得、使用及释放

Unicode 传统使用ASCII字符集时只使用一个

字节来表示字符,而Windows CE时使

用Unicode编码方式,也就是使用两个

字节来表示一个字符。其目的是为 了

让我们可以很快且很容易的制成多国

语版本和快速的转换或移植应用程序。

但是应用程序开发者要注意内存的使

用和宣告,因为使用Unicode字符集表

示字符串会比使用ASCII字符集表示

字符串多占一倍的空间。另外,应用程

序开发者要处理必要的字符集转换,例

如Unicode字符转换成ASCII字符,或

ASCII字符转换成Unicode字符。

因为Windows CE资源比较少的缘故,

与desktop Windows相较,有些控件

(control) 在Windows CE上是不支持

的,或有些控件的功能有变少

因为资源有限的关系,Windows CE装

置的应用程序窗口的功能会比桌上型

计算机和桌上型窗口操作系统来的简

单,所以有些功能并不支持,例如窗口

不能动态地改变大小(resize)

控件

窗口

档案系统和目录服务 Windows CE装置只支持FAT32档案系

统、简化的目录服务(light directory

service)和简单的保全(security)和稽核

(authentication)

开发跨平台的应用程序 使用跨平台(cross platform)的标头档

(head file)及引用檔(include file)及避免

使用硬件相关(hardware dependent)和

平台相关(platform dependent)的程序代

码可以让应用程序跨硬件平台而更有

可重用性(reusable)

除以上所强调的部份外,使用eMbedded Visual C++为Windows CE装置开发应用程序和使用

Visual Studio的Visual C++为一般Windows(Windows 95/98/NT/2000/XP)开发应用程序几乎都

是一样。它们有很类似的整合开发环境(IDE)和工具、同样的窗口控制方式、同样的窗口讯

息传递、同样的资源使用和建立方式、同样的控件程使用方法、同样的窗口,甚至于同样的

应用程序架构程写法。相信用过Microsoft Visual C++开发应用程序的人在使用eMbedded

Visual C++为Windows CE装置开发应用程序时一定不觉得陌生。

本文标签: 应用程序开发项目