第十三章 Windows CE应用程序开发环境
由于Windows CE操作系统是以Win32 API为基础,所以它的应用程序开发环境与Windows 98、Windows NT和Windows 2000类似。Windows eMbedded Visual C++提供了Windows CE应用程序的整合开发环境与工具,使软件开发人员在建立、编译与侦错应用程序时更加方便。本章将介绍Windows CE应用程序的开发模型与开发环境。
13.1 Windows CE应用程序开发模型简介
与Windows系列的其它操作系统相同,Windows CE是采用事件驱动的应用程序模型:Windows CE上的程序透过接收讯息、解释讯息并对讯息作出反应来运作。一个Windows CE程序拥有一个或多个窗口,透过一个讯息循环来接受、处理讯息。窗口可以是隐藏的 (例如在一个不需要使用者接口的应用程序中),每个窗口都具有一个窗口句柄与一个讯息处理器,负责处理这个窗口接收到的讯息,你也可使用窗口句柄呼叫相关的函数。一个Windows CE程序有两个主要的函数,分别是WndProc (讯息处理器) 和WndMain (提供程序的进入点):WndProc函数负责为窗口处理讯息,通常每个应用程序只处理与它有关的讯息,而将其它讯息传回给操作系统;而WinMain不仅是一个应用程序主要的讯息处理函数,还负责程序的初始化及结束。
在开发Windows CE的应用程序时,首先必须考虑应用程序会在什么样的平台与处理器上执行,并了解硬件平台的配置 (所使用的SDK会考虑到平台与处理器的特性)。由于Windows CE是一个模块化的操作系统,设备厂商可以选择特定的模块与组件来配置Windows CE设备,你可能必须考虑一些问题,例如你的应用程序可以使用多大的内存空间等。此外,也可以选择是否使用其它的应用程序开发工具,如eMbedded Visual C++提供的微软基础类别 (MFC) 与动态模板函式库 (ATL),或者是在Windows CE程序中使用以组件对象模型 (COM) 为基础的类别与函数。
13.2 Windows CE应用程序开发环境
eMbedded Visual C++ (目前最新版本为4.0) 是Windows CE .NET 所提供的应用程序开发工具,它的功能相当强大。透过eMbedded Visual C++,程序设计师可以在友善的环境下开发以Windows CE为基础的应用程序,并能查询平台软件开发工具套件的相关详细文件。透过eMbedded Visual C++所开发出来的应用程序可以在不同的特定平台上执行,系统会针对特定平台自动进行程序代码转换的工作,程序设计师不需要撰写额外的程序代码。
13.2.1 系统安装
要进行eMbedded Visual C++的安装使用,必须满足以下的系统基本要求:
l 处理器为Pentium 150MHz以上的个人计算机。
l 操作系统为Microsoft Windows XP / Microsoft Windows 2000 Professional加上Service Pack 2 (或更新的版本)。
l 32MB以上的内存。
l VGA或更高分辨率的屏幕。
l 鼠标。
l 360MB以上的硬盘空间。
13.2.2 eMbedded Visual C++整合开发环境的组件与功能
曾使用过Microsoft Visual C++的程序设计师会发现eMbedded Visual C++提供了一个相当类似的开发环境。不同的是eMbedded Visual C++提供了特定的工具与资源来开发Windows CE应用程序。Windows eMbedded Visual C++具有以下组件:
l 项目工作区 (Project Workspace):用来管理项目与项目的组件。
l 程序编辑器 (Text Editor):用于撰写程序代码。
l 资源编辑器 (Resource Editor):用于设计和修改资源,如对话框与菜单。
l 编译器 (Compiler)。
l Windows CE设备仿真器 (Windows CE Simulator):用于在桌上型计算机测试应用程序。
l 平台管理器 (Platform Manager):用于在Window CE设备上测试程序。
l 除错器 (Debugger):用于控制程序的单步执行和断点执行。
l 应用程序精灵 (AppWizard):协助程序设计师针对不同平台的各种应用程序建立工作框架。
l 程序代码浏览器:用于检查和编辑程序中的函数与类别,并快速显示它们之间的关系。
l 类别精灵 (ClassWizard):用于自动产生类别程序代码。
l Windows诊断工具 (Windows diagnostic tools):如Windows CE Remote Spy (Cespy.exe) 提供了额外的程序编辑和侦错的功能。
l 在线文件和辅助说明 (Online documentation and help)。
下面将介绍如何利用eMbedded Visual C++整合开发环境 (IDE) 提供的功能与工具来开发一个Windows CE程序。更详细的操作说明可以参考eMbedded Visual C++的使用手册。图13.1是eMbedded Visual C++的整合开发环境。
图13.1 eMbedded Visual C++的整合开发环境
依照菜单分类,eMbedded Visual C++整合开发环境有以下功能:
l File:从这里可以开启、新建或者储存档案与项目。当选择新建项目时,AppWizard会自动被启动。
l Edit:这里不仅提供程序编辑器所应具备的复制、贴上、寻找与替换等功能,还提供还原最近的操作与设置断点等功能。
l View:管理IDE中显示的内容,如显示程序结果与侦错窗口等,使用者可以从这里启动ClassWizard。
l Insert:从这里可以在目前的项目中插入Class、Form、resources与ATL等物件。
l Project:从这里可以对项目进行操作,如加入新的档案、设定档案属性等。
l Build:从这里可以编译与执行程序,对程序进行侦错。
l Tools:从这里可以启动eMbedded Visual C++为Windows CE程序开发所提供的多种工具。如Remote File Viewer、Remote Process Viewer、Remote Spy++等。
l Windows:管理整合开发环境 (IDE) 中的窗口。
l Help:从这里可以查询eMbedded Visual C++的相关文件与在线说明。
13.2.3 应用程序的建立
利用应用程序精灵来建立一个应用程序需经过以下步骤:
Step 1:从File菜单中选择New,启动AppWizard。选择Project中的WCE MFC AppWizard [exe],新建一个Windows CE MFC应用程序。输入项目名称,选择适当的CPU类型,在本例中选择了WCE 仿真器。
图13.2 新建窗口应用程序
图13.3 选择应用程序的类型与支持的语言
Step2:选择程序类型与支持的语言。
Step3:选择项目所需的特性,并选择控制列类型。
图13.4 选择所需特性的窗口
Step4:选择是否自动产生原始程序代码批注,并选择MFC函式库是作为共享DLL,还是作为静态链接库。最后点选Finish,eMbedded Visual C++将自动产生应用程序的框架,之后可以利用整合环境作进一步的开发。
图13.5 完成新建项目的窗口
13.2.4 编译产生可执行档
在编译产生可执行档之前,可以选择Project菜单中的Settings功能选项,修改项目的设置,如设定编译器、链接器。图13.6为设定的画面。
图13.6 设定画面
在产生可执行文件之前,必须设定程序执行的目标平台与设备,选择编译过程中是否产生侦错信息。可以藉由选择Build菜单上的Set Active Platform设定目标平台的SDK;选择Build菜单上的Set Active Configuration来设定目标平台的系统架构以及是否产生侦错信息。图13.7是两个设定画面:
图13.7 两个设定画面
在这个例子中,选择目标平台的SDK为STANDARD SDK,目标平台为WCE设备仿真器并且在编译产生可执行档的过程中产生侦错信息。也可以透过如图13.8工具列进行以上设定。
图13.8 工具列
eMbedded Visual C++提供的Windows CE设备仿真器使程序设计师可以在没有实际Windows CE设备的情况下,开发并进行Windows CE应用程序的侦错,从而提高程序开发的效率。若选择编译产生可执行文件的目标平台为Windows CE设备仿真器,则当执行应用程序时,整合开发环境将启动仿真器,下载可执行文件到仿真器并且执行。
点选工具列上图示 ,编译产生可执行档。从图13.9可以看到Windows CE 仿真器被启动。
图13.9 Windows CE仿真器被启动
点选图示 ,执行Hello.exe。可以看到程序在仿真器中执行。如图13.10所示。
图13.10 应用程序在仿真器中执行
13.2.5 应用程序的侦错
在进行程序侦错前,需要跟编译产生可执行文件一样设定目标平台、目标设备 (可从菜单Build->Set Platform与Build->Set Active Configuration设定,或从工具列设定),需要注意的是,必须选择在编译产生过程中产生侦错信息。为了使程序在侦错过程中自动被下载到远程设备 (或WCE设备仿真器) 上,选择Tools菜单上的Options,在对话框中点选download页面,勾选Always download binary to the target与Always download dependencies to the target,如图13.11所示。
图13.11 自动下载的设定
现在可以开始进行侦错,将鼠标指向Build菜单下的Start Debug,并选择适当的命令,使程序在侦错状态下执行。有下面几种命令:
l Go:开始执行程序,遇到断点时中断执行。
l Step Into:在WinMain函数的入口点中断程序的执行。如果没有设置断点的话,可以使用这项命令,从程序入口开始一步步的执行。
l Run to Cursor:执行至光标处,这个命令只有在程序代码编辑窗口开启时有效。
图13.12显示了程序进入侦错状态,并且在WinMain函数的入口点中断执行。
图13.12 程序进入侦错状态,并且在WinMain函数的入口点中断执行
进入侦错状态后,侦错器的工具列被启动,可以直接透过选择Debug菜单或工具列中的命令进行侦错。在程序代码编辑窗口中单击鼠标右键,可以选择Insert/Remove Breakpoint命令,新增或删除断点。图13.13所示是一个侦错接口。
图13.12 程序侦错