为基于 Windows Mobile 2003 的 Pocket PC 开发人员提供的新内容

发布日期: 3/9/2005 | 更新日期: 3/9/2005

Microsoft Corporation

适用于:
Microsoft® 基于 Windows Mobile® 2003 的 Pocket PC
Microsoft Windows CE .NET 4.2
Microsoft .NET Compact Framework

摘要:了解对于熟悉基于 Windows Mobile 2003 的 Pocket PC 的软件开发工具包的 Pocket PC 开发人员而言的重要更改和新功能,并了解如何过渡到 Pocket PC 2003 设备和 Pocket PC 2003 SDK。

*
本页内容
简介简介
Pocket PC 2003 中针对开发人员的更改Pocket PC 2003 中针对开发人员的更改
针对 Pocket PC 2003 开发人员的新功能针对 Pocket PC 2003 开发人员的新功能
小结小结

简介

基于 Microsoft® Windows Mobile® 2003 的 Pocket PC 对 Pocket PC 用户和开发人员来说是一个重要的里程碑。Pocket PC 2003 基于 Microsoft Windows? CE .NET 4.2 这个新的操作系统,而且是第一个将 Microsoft Windows .NET Compact Framework 集成在 ROM 中的设备。这些改进以及其他更多的特性为移动应用程序的开发奠定了新的基础。本白皮书旨在讨论对于熟悉基于 Windows Mobile 2003 的 Pocket PC 的软件开发工具包的 Pocket PC 开发人员而言的重要更改和新功能,并了解如何过渡到 Pocket PC 2003 设备和 Pocket PC 2003 SDK。请下载 Pocket PC 2003 SDK from the Mobile Devices Developer Downloads

概述

概括起来,本文的要点包括:

Microsoft Windows .NET Compact Framework — .NET Compact Framework 在所有新 Pocket PC 2003 设备的 ROM 中,而且可以安装在 Pocket PC 2000 和 Pocket PC 2002 设备的 RAM 中。

Microsoft Visual Studio® .NET 2003 — Pocket PC 2003 SDK 集成在 Visual Studio .NET 2003 IDE 中,可以从 Microsoft Visual Basic® .NET 和 Microsoft Visual C#® .NET 中使用。

eMbedded Visual Tools 3.0 — 对目标 Pocket PC 2003 设备而言,该开发环境不再受支持。如果您需要本机代码支持,您需要使用 eMbedded Visual C++® 4.0(带有 SP2),而对于托管代码 (.NET) 开发,则需要 Visual Studio .NET 2003。

eMbedded Visual C++ — 重要的更改与新操作系统 Windows CE .NET、调试和远程工具有关。

eMbedded Visual Basic — 重要的更改包括 Pocket PC 2003 SDK 不支持 eMbedded Visual Basic 开发这一事实。现有的 eMbedded Visual Basic 应用程序继续运行在 Pocket PC 2003 设备上以获得向后兼容性。对于希望向前兼容的 eMbedded Visual Basic 开发人员来说,可以移植到 Visual Basic .NET,并利用新工具带来的好处。

主要的新功能包括:

新的核心操作系统 — Pocket PC 2003 设备运行在 Windows CE .NET 4.2 上。新的操作系统可以使设备运行更稳定、速度更快。Microsoft Pocket Internet Explorer、仿真程序技术、联网服务和 Microsoft Windows Media® 技术是几个已经得到广泛改进的方面。

仿真程序增强功能 — 该仿真环境要强健的多,而且支持三种模式:Pocket PC 2003、Pocket PC Phone Edition 2003(支持使用 WaveCom WMOD2B 外部 GSM 无线电模块的外部无线电设备),以及带有 Virtual Radio 的 Pocket PC Phone Edition 2003。另外,仿真程序本身的新功能中包括虚拟交换支持、驱动器映射和 GAPI 支持。

远程配置 — 该功能可以对 Pocket PC(和 Smartphone)进行配置,是一种用于本地和远程自定义设备的强大方法。该功能甚至可用于空中传输 (OTA) 方案。

更新的浏览器 — Pocket Internet Explorer 支持 HTML 4.01、CSS、XHTML、WML 2.0 等,目前已成为 Internet 浏览器家族中很有影响的成员。

Phone Edition 支持 — 针对诸如捕获传入的短消息服务 (SMS) 消息之类的操作的改进支持。

其他功能 — 还有许多其他的新功能可供研究和使用。

其他概要信息请参阅以下页面:

Microsoft Windows Pocket PC 和 Smartphone Developer 门户

Embedded Developer Center

Mobility Developer 社区

.NET Compact Framework

eMbedded Visual C++ 4.0

返回页首返回页首

Pocket PC 2003 中针对开发人员的更改

本章将介绍在向 Pocket PC 2003 SDK 移植时,针对 Pocket PC 开发人员所进行的更改。

eMbedded Visual Tools 3.0

当开发用于 Pocket PC 2003 的应用程序时,您不能再使用 eMbedded Visual Tools 3.0 了。但是,对于目标 Pocket PC 2000 和 2002 而言,您仍然需要使用该工具集。幸运的是,考虑到您可能需要维护并支持现有应用程序,新工具可以与它们共存。因此,在安装 eMbedded Visual C++ 4.0(eMbedded Visual Basic 开发在 Pocket PC 2003 上不再受支持,请参阅下面关于此主题的单独一节)和 Visual Studio .NET 工具(Visual Studio .NET 2003、.NET Compact Framework,等等)时,您可以保持安装的 eMbedded Visual Tools 3.0。

针对 eMbedded Visual C++ 开发人员的更改

如果您要使用 C++ 开发用于 Pocket PC 的非托管应用程序(本机代码),您仍需要使用 eMbedded Visual C++。您不能用新工具 (Visual Studio .NET 2003) 构建非托管应用程序。如果您针对的是 Pocket PC 2003 或下一代 Smartphone,您需要使用安装有 Service Pack 2 的 eMbedded Visual C++ 4.0。您不能使用 eMbedded Visual C++ 3.0 开发、部署或调试 Pocket PC 2003 和下一代 Smartphone 应用程序。但是,由于两个工具集可以共存,您仍然可以在同一台开发计算机上维护和支持 Pocket PC 2000 和 2002 应用程序。

当将应用程序从 eMbedded Visual C++ 3.0 移植到 eMbedded Visual C++ 4.0 时,您首先会注意到的是,不支持自动升级项目文件。对此,最简单的解决办法是创建一个新的空 eMbedded Visual C++ 4.0 项目,并手动添加源文件。

eMbedded Visual C++ 4.0 中的绝大多数更改都与 Pocket PC 2003 中使用的新操作系统 Windows CE .NET 相关。但是该工具本身也有许多其他功能。这些功能中的绝大多数与调试和远程工具有关。

一项有趣的调试功能是能够连接到活动进程。也就是说,即使有应用程序挂起,并且调试程序未启动,也可以通过选择菜单选项 Build(生成)、Start Debug(启动调试)、Attach to Windows CE Process(连接到 Windows CE 进程)来连接到进程。在活动进程列表中进行选择,提供 PC 中可执行程序的路径,然后调试程序就会启动并连接到选定的进程。另一个很特别的功能是实时 (JIT) 调试挂钩,它使您可以诊断未处理的异常而不是终止应用程序。如果设置了断点,就可以终止多线程应用程序中的所有线程。

对于 eMbedded Visual C++ 4.0,有一个称为远程调用分析器 (Remote Call Profiler) 的新工具。您可以使用该工具以多种方法跟踪正在执行的应用程序中的调用。值得一提的还有远程性能监视器 (Remote Performance Monitor),它允许开发人员实时监视多个预定义的规格(类似于 Microsoft Windows XP 性能监视器)。

其他功能还有支持内部函数(编译为内联代码而不是函数调用的函数)、ATL 进程外项目向导(用于创建 COM 进程外服务器)和标准模板库(Standard Template Library,缩写为 STL,支持访问最常用算法和数据结构的子集)。

有关升级到 eVC 4.0 和 Windows CE .NET 的含义的更多信息,请参阅白皮书 eMbedded Visual C++ 4.0 和 Windows CE .NET

针对 eMbedded Visual Basic 开发人员的更改

Microsoft 在 2001 年的秋天宣布,eMbedded Visual Basic 不会继续发展,以便为新的 .NET 平台和设备工具“让路”。因此,Pocket PC 2003 SDK 不支持 eMbedded Visual Basic 开发,而且 Pocket PC 2003 设备不在 ROM 中包括 eMbedded Visual Basic 或 ADOCE 运行库。但是,eMbedded Visual Basic 和 ADOCE 运行库可以从 Internet 下载,位置在:Pocket PC。下载后,可将 eMbedded Visual Basic 安装在 Pocket PC 2003 设备的 RAM 中。这意味着现有 eMbedded Visual Basic 应用程序继续运行在 Pocket PC 2003 设备上,这样开发人员可以继续针对 Pocket PC 2003 设备使用 eMbedded Visual Basic 和 Pocket PC 2002 SDK。

对于想向前兼容的 eMbedded Visual Basic 开发人员来说,可以移植到 Visual Basic .NET,利用新工具的好处。从语言角度来说,最重要的更改是以下事实:Visual Basic .NET 是一个面向对象的现代语言,而且代码是使用公共 .NET Compact Framework 类库(例如,用于 Windows 窗体的 System.Windows.Forms,以及用于数据库管理,带有公共方法、属性和事件的 System.Data)生成的。对常见任务(如严格的类型检查、使用类、调用 XML Web 服务和实现结构化异常处理)的内部支持大大改善了 eMbedded Visual Basic 开发人员以前执行这些任务时效率低下的状况。

没有用于将 eMbedded Visual Basic 代码转换为 Visual Basic .NET 代码的向导或自动过程。必须手动移植代码,期间需要仔细检查和修改:

语言语法 — eMbedded Visual Basic 是一种 VB 脚本语言,因此根据不同的代码类型,语法差异可能很大。

公共代码库的实现 — 现有 eMbedded Visual Basic 公共代码库将需要进行移植。由于现在支持使用类,因此代码库的实现和使用可能会不同。由于 .NET Compact Framework 是 .NET Framework 的子集,因此现有 Visual Basic .NET 类库现在可以部分用于 Pocket PC 开发。

应用程序导航和控制流 — 窗体管理和应用程序导航是通过 System.Windows.Forms 中的类型来处理的,与从 eMbedded Visual Basic 来实现不同。

数据库 — 数据访问通过 ADO.NET 的一个子集进行处理。Microsoft 提供一个用于 Microsoft SQL Server 2000 Windows CE Edition 2.0 (SQL Server CE 2.0) 的托管数据提供程序。.NET Compact Framework 不包括用于访问有时被称为 CEDB 或 Pocket Access 的本地数据存储区(常用于 eMbedded Visual Basic 开发人员)的托管类型。

XML — XML 的管理和操作得到内置支持。

XML Web 服务 — eMbedded Visual Basic 不提供内置支持来调用远程组件。必须使用第三方支持来调用和使用远程组件。XML Web 服务支持是 .NET Compact Framework 的核心类型之一,并被认为是整个 .NET Framework 中的主要集成机制。大多数开发项目中有关系统集成的工作量很大,因此,系统集成代码极有可能要重写。

异常处理 — eMbedded Visual Basic 中的错误处理由四个单词:“On Error Resume Next”,以及无限个“If Err.Number <> 0 Then”语句组成。结构化的、有效的异常处理(使用 Try...Catch...Finally 块)将提高代码健壮性和容错能力。

例如,让我们看一下 eMbedded Visual Basic 中的异常处理,来和 Visual Basic .NET 进行一下对比。示例代码先打开一个文本文件,然后逐行读取直到文件结尾。这是大多数 Basic 程序员所熟悉的概念。

您必须添加一个 If Err.Number <>0 以捕获并处理 eMbedded Visual Basic 中的任何异常,如以下代码所示:

' Open file
' Variables
Dim sLine As String
Dim file As FILECTL.file
Set file = CreateObject("FILECTL.file")

Screen.MousePointer = 11

' Error handling by "resuming next"
On Error Resume Next

' Open application settings
file.Open "\appdata.txt", fsModeInput

' Check if error occurred
If Err.Number <> 0 Then
    MsgBox "File could not be opened!", vbCritical, "Error"
    Exit Sub
End If

' Loop through file
Do While Not file.EOF
    ' Read line-by-line
    sLine = file.LineInputString
    ' Check if error occurred
    If Err.Number <> 0 Then
        MsgBox "Data could not be retrieved!", vbCritical, "Error"
        Exit Sub
    End If
Loop

Screen.MousePointer = 1

' Close file
file.Close

该代码以一个 On Error Resume Next 语句开头,该语句意味着代码即使出现错误也继续执行下一行。Err-object 包含已发生的所有可能错误的信息。通过在每行代码后检查 Err-object 的 Err.Number 属性是否为默认值 0,开发人员可以插入代码以处理错误。也就是说开发人员需要猜测在整个代码中可能导致错误的行。让我们来看一下 Visual Basic .NET 代码是如何处理异常的,尽管它在异常处理方面已有很大改进:

' Open data file

' Variables
Dim sLine As String
Dim file As StreamReader

Cursor.Current = Cursors.WaitCursor

' Error handling by Try-Catch-Finally
Try
    file = New System.IO.StreamReader("\appdata.txt")

    While file.ReadLine <> Nothing
        sLine = file.ReadLine
    End While

    file.Close()

Catch ex As Exception
    Select Case ex.Message
        Case "FileNotFoundException"
            MsgBox("File could not be opened!", MsgBoxStyle.Critical, 
              "Error")
        Case Else
            MsgBox("Data could not be retrieved!", MsgBoxStyle.Critical, 
              "Error")
            file.Close()
    End Select
Finally
    Cursor.Current = Cursors.Default
End Try

处理文件管理的所有基本代码位于 Try 块中,处理错误的代码位于 Catch 块中,假设代码在 Try 和 Catch 块之后运行。代码在组织上有较大改进,所有可能发生的异常也均得到处理,因此代码可读性和应用程序的稳定性得到改善。

有关从 eMbedded Visual Basic 迁移到 Visual Basic .NET 的信息,请参阅白皮书 Moving From eMbedded Visual Basic to Visual Basic .NETApplication Development Landscape for Windows CE .NETChoosing a Windows Embedded API:Win32 vs. the .NET Compact Framework 这两篇文章提供了有关选择用于特定编程任务的 API 的详细信息。API 的选择最终决定开发工具的选择:Embedded Visual C++ 3.0 /4.0 或 Visual Studio .NET。

返回页首返回页首

针对 Pocket PC 2003 开发人员的新功能

本节将讨论向 Pocket PC 2003 SDK 迁移时 Pocket PC 开发人员需做的更改。Pocket PC 2003 SDK 文档(默认情况下,安装在 C:\Program Files\Windows CE Tools\wce420\POCKET PC 2003\Help)包含大量关于开发人员新功能的信息。文档内容要点包括:

“Microsoft Windows Powered Pocket PC 2003 中有哪些新功能”

“使用Pocket PC Emulator”

“针对 Pocket PC 进行编程”

“Pocket PC 用户接口指南”

SDK 文档还包含许多有价值的示例项目。

新核心操作系统

Pocket PC 2003 构建于 Windows CE 4.20 之上,而 Pocket PC 2000 和 Pocket PC 2002 构建于 Windows CE 3.0 之上。Windows CE 是一个以模块方式构建的操作系统,这意味着该核心操作系统包含可用于构建该操作系统的新实例的模块和服务。构建于 Windows CE 4.20 之上的设备不能自动包含 Windows CE 4.20 的所有功能,对 Pocket PC 2003 来说也是如此。下图阐释了 Windows CE 4.20 的模块性。


图 1:Windows CE 4.20 是一个模块化操作系统

Windows CE 4.20 中新的操作系统功能无疑对实际设备和 Pocket PC 2003 SDK 都有影响。这些功能有:

改进的仿真程序

新增和改进的蓝牙支持

内核增强功能,由此改进了性能,并节省了 ROM 空间

下一代网络层协议(如 TCP/IPv6)支持。TCP/IPv6 支持更大的地址空间。

改进的显示驱动程序

新文件系统(二进制 ROM 映像文件系统),可使 Pocket PC 2003 设备支持 NOR 或 NAND 闪存,然后要求需要模块的页面在 RAM 中执行。这将为 OEM 提供灵活性,以便在设备中权衡选择 NAND、NOR 或 RAM。

有关更多的新功能和信息,请参阅 Windows CE 4.20 文档

新工具

Pocket PC 2003 软件开发工具包 (SDK) 文档描述了所有的新 SDK 工具和其他工具,例如,Pocket PC 的 Windows 中的消息队列 (MSMQ)、Pocket PC 的 HTTP Server,以及 SQL Server CE。这些工具包括:

CabWiz.ddf — 创建 CAB 文件的模板指令文件。

CabWiz.exe — 命令行实用工具,可以将指令文件作为参数,构建含有程序文件和设置指令的 .cab 文件。有关其他信息,请参阅 SDK 帮助文档中的“Using CABWiz”(使用 CABWiz)主题。

EmuASCfg.exe — 该工具配置 ActiveSync 和 Pocket PC 仿真程序,以便允许通过 Ethernet Virtual Switch 建立 ActiveSync 合作关系。在运行该工具之前,您必须使用 eMbedded Visual C++ 的 VirtualSwitch 选项来启动 Pocket PC 仿真程序。有关使用信息,请在命令行键入“emuascfg.exe /?”。

RapiConfig.exe — RapiConfig 提供了一种方法,可以使配置 XML 在通过 ActiveSync 连接的设备或仿真程序上执行。有关使用信息,请在命令行键入“rapiconfig /?”。

仿真程序增强功能

Pocket PC 2003 SDK 包含一个新的仿真环境,该环境是作为一个复制运行 Windows CE 的硬件的实际虚拟计算机实现的。因为该新的仿真程序是 Windows CE 操作系统和 Pocket PC 组件的确切表示形式,因此可以使实际 Pocket PC 设备和设备仿真环境之间具有更高级别的保真度和相似性。而且,新仿真程序不仅限于仿真英文版的 Pocket PC。从开发角度看,仿真程序的稳定性得到了很大改善。

该 Pocket PC 2003 仿真程序有三个仿真模式:Pocket PC 2003、Pocket PC Phone Edition 2003(支持使用 WaveCom WMOD2B 外部 GSM 无线电模块的无线电设备),以及带有 Virtual Radio 的 Pocket PC Phone Edition 2003。


图 2: Pocket PC 2003 仿真程序

其他内容要点:

仿真程序支持驱动器映射

现在,仿真程序通过共享文件夹支持模拟存储卡。当文件夹被仿真程序共享时,将显示为存储卡,仿真程序会将其当作真实的设备来响应。

仿真程序支持游戏 API (GAPI)

Pocket .PC. 2003 仿真程序图像现在支持 GAPI。

新仿真程序不能与旧版本并行运行

新仿真程序(4.2 版)不支持与旧版本并行运行。但是,可以同时运行新仿真程序的多个实例。

仿真程序支持以太网同步

使用带有 eMbedded Visual C++ 4.0 的 VirtualSwitch 驱动程序,开发人员现在可以通过 Ethernet 与 ActiveSync 进行同步,再也无需使用串行端口了。

远程配置

Windows Powered Smartphone 已经从 Pocket PC 继承了多个功能,而 Smartphone 2002 首先引入的是配置管理器基础结构。Pocket C 2003 现在和 Windows Powered Smartphone?2002 支持相同的配置管理器基础结构。

处理远程配置的主要组件是设备上的配置管理器。它可以处理所有配置请求,并将这些请求转发到各个配置服务提供程序 (CSP)。一些重要的 CSP 用来处理网络连接、电子邮件设置、安全策略、同步选项和应用程序安装(或删除)。

让我们来看看其中的一种用来处理浏览器收藏夹的 CSP,看如何利用它为 Pocket PC 的 Internet Explorer 添加收藏夹链接。通过向 CSP 提供一个预定的 XML 文件,来对 CSP 进行控制。该文件的示例如下:

<wap-provisioningdoc>
  <characteristic type="BrowserFavorite">
    <characteristic type="Business Anyplace">
      <parm name="URL" value="http://www.businessanyplace.net"/>
    </characteristic>
  </characteristic>
</wap-provisioningdoc> 

该标准 XML 文件包括两个重要部分。第一是安装部分,用来指定一系列安装选项。例如“NoUninstall”选项,它可以防止配置显示在已安装的应用程序列表中(设置/系统/删除程序)。第二部分是实际的 CSP 配置,在这里,我们可以添加至开发人员社区站点的收藏夹链接。收藏夹名称是“Business Anyplace”,指向的 URL 是“http://www.businessanyplace.net”。

有关更多信息,请参阅 SDK 中的 Device Management 主题。有关 Pocket?PC?2003 中可用的配置服务提供程序 (CSP) 的更多信息,请参阅 SDK 的参考部分中的 CSP 文档。

访问配置管理器的方法有多种:

本地配置

本地访问配置管理功能是通过 DMProcessConfigXML 函数来实现的。该函数启用可扩展标记语言 (XML) 数据的提交,该数据会导致移动设备设置的改变。

远程配置

Pocket PC 2003 Phone Edition 通过相同的无线应用程序协议 (WAP) 推进传输机制和安全方法支持远程空中传输 (OTA) 配置,就像 Smartphone 2002 一样。该移动设备处理接收的 OTA 提供 XML 数据。

CAB 提供格式 (CPF)

为使设备读取预定的 XML 文件,需要将其命名为 _setup.xml 并打包为压缩文件 (.cab),或 CAB 预定格式 (CPF) 文件,扩展名为 .cpf。相关的命令为:

makecab.exe /D COMPRESS=OFF _setup.xml balink.cpf

现在,有许多方法可以将 CPF 文件 (balink.cpf) 加到设备中。只需要将文件复制到 Pocket PC 中,并点击该文件以启动安装,或者您可以通过空中传输 (OTA) 来提供文件。有若干个 OTA 选项,而最简单的方法是将该文件放在一个 Web 服务器上,并在一个 Pocket PC 上的 Internet Explorer 中输入该 URL。还可以选择使用 WAP Push,它可以使用短消息服务 (SMS) 消息来启用配置设置推进。

安装应用程序时,也使用 CPF 文件,但是创建该文件的方法截然不同。此时不是使用标准 makecab 实用工具,而是使用 CABWiz 实用工具(在 Smartphone 安装中使用 CABWizSP)。它使用标准安装程序信息文件 (.inf),该文件与创建标准 Pocket PC 安装时所使用的文件类似。

更多信息

远程配置工作原理的更多深入信息,在 Pocket PC 2003 SDK 中包含的 Adaptation Kit for Mobile Operators 帮助文件中有所提供。

更新的浏览器

Pocket PC 2003 中包含的 Pocket Internet Explorer 较之以前版本是一个相当重要的升级。它支持如 HTML 4.01、XHTML 和级联样式表 (CSS),因此对大多数应用来讲是有效的浏览器客户端。HTML 4.01 是当前的 Web 浏览器标准,CSS 支持将会打开大量现有的,使用这种标准化页面布局的有效方法的站点。日益引人关注的标准(用于提供标准 XML 格式的 HTML 内容)也是一种很好的补充。特别是在向移动电话提供 Web 内容时,XHTML 已作为一种通用的标准。同样,升级到 WML 2.0 也非常受欢迎。WML 2.0 是转换到 XHTML 的主要 WML 1.x 标准,也是通用的移动电话标准。

Microsoft JScript 支持 (JScript 5.5) 现在几乎和 Microsoft Internet Explorer 5.5 处在同一级别,这意味着,结合使用一个更完整的文档对象模型 (DOM),多数针对桌面应用程序编写的脚本将能够运行在 Pocket PC 2003 上。有关不同版本 JScript 的完整功能概述,请参阅 Version Information。有关使用 Jscript 的详细文档(包括语言参考、教程和示例),请参阅 Windows Script

支持“下一代 Internet”IPv6 可以加速实现所有移动设备使用唯一地址和真正对等通信(甚至是无线通信)的光明前景。如果您还不了解该内容,请参阅 IPv6 page on MSDN

在 Pocket PC 2003 上,XML 受支持的方式和在 Internet Explorer 5 中是一样的。但是,并不向后兼容 Internet Explorer 4 中的 XML DOM 支持,而且不支持数据绑定。不过,通过 Jscript,XML 可以访问 DOM。

当检测到 Pocket PC 2003 设备正在连接到 Web 站点时,可以查看新代理字符串(在 Internet 信息服务器中,在 HTTP_USER_AGENT 服务器变量中提供):

Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)

有关实现方法的详细信息,请参阅 Make Your Web Applications Support Pocket PC Pocket PC

图像支持也有很大改进。PNG、JPEG、GIF、WMBP、2BP 和 BMP 得到内置支持。而且,现在可以使用图像映射和动画 GIF 了。通过可扩展图像库,第三方也可以添加对其他格式的支持。

更多信息

有关 Pocket PC 的 Internet Explorer 的更多深入信息,在 Pocket PC 2003 SDK 中包含的 Writing Application for Pocket PC 帮助文件的 Creating Online Content for Pocket PC 一节中有所提供。

Phone Edition 支持

Pocket PC Phone Edition 2003 支持也得到了改进,最能说明这一点的示例是使应用程序知道传入的短消息服务 (SMS) 消息的功能。Pocket PC 2003 SDK 中包含的一个名为 MapiRule 的示例,展示了如何实现该功能。该示例是一个 COM 组件,实现 IMailRuleClient 接口。该接口及其方法可以使开发人员对传入消息执行自定义的过滤规则,并在应用程序中进行适当处理。该功能可用于 Pocket PC 2003 和下一代 Smartphone 平台。

让我们来看一下 IMailRuleClient 接口的示例中的 ProcessMessage 方法(参数是 IMsgStore *pMsgStore、ULONG cbMsg、LPENTRYID lpMsg、ULONG cbDestFolder、LPENTRYID lpDestFolder、ULONG *pulEventType、MRCHANDLED *pHandled)的执行过程:

SizedSPropTagArray(1, sptaSubject) = { 1, PR_SUBJECT}; 
SizedSPropTagArray(1, sptaEmail) = { 1, PR_SENDER_EMAIL_ADDRESS}; 
ULONG cValues = 0;
SPropValue *pspvSubject = NULL;
SPropValue *pspvEmail = NULL;
IMessage *pMsg = NULL;

// Get the message from the entry ID
pMsgStore->OpenEntry(cbMsg, lpMsg, NULL, 0, NULL, (LPUNKNOWN *) &pMsg);
    
// For SMS, the subject is also the message body
pMsg->GetProps((SPropTagArray *) &sptaSubject, MAPI_UNICODE, &cValues, 
  &pspvSubject);

// get the sender's address or phone number
pMsg->GetProps((SPropTagArray *) &sptaEmail, MAPI_UNICODE, &cValues, 
  &pspvEmail);

// Check for "zzz" in message
if (wcsstr(pspvSubject->Value.lpszW, L"zzz") != NULL)
{
  MessageBox(NULL, pspvSubject->Value.lpszW, pspvEmail->Value.lpszW, 
    MB_OK);

  // Delete the message and mark it as handled so it won't show up in 
    Inbox
  DeleteMessage(pMsgStore, pMsg, cbMsg, lpMsg, cbDestFolder, lpDestFolder, 
    pulEventType, pHandled);
}
else 
  // a 'normal' message, pass it on
  *pHandled = MRC_NOT_HANDLED;

首先,检索消息 (pMsg),并从消息中提取主题(pspvSubject、SMS 消息正文)和发送方(pspvEmail、地址或电话号码)。如果消息文字包括“zzz”,将显示消息框,并将消息文字和发送方作为标题。如果是这样,消息还将从收件箱中删除。以上代码段与实际示例相比已进行了简化。

其他功能

在本节中,您将看到其他一些改变和新增功能。

改变

COM 对象现在使用自由线程模型 — 所有新 COM 对象(包括 Active X 控件)都应为自由线程以优化其性能。对于以前开发的 COM 对象,不论为何种线程模型均能正常运行,因为 OS 会执行运行时检查以确保使用正确的线程模型。

SIPSTATE 枚举变为其他标头文件 — SIPSTATE 枚举从 aygshell.h 变为 shellapi.h。以前编译的没有 shellapi.h 的代码,现在可能需要包含该标头文件了。

不再支持某些 CEMAPI 字符串常数 — 不再支持以前在 cemapi.h 中定义的以下字符串常数:kszCapAmountToFetch、kszCapAttachAmount、kszCapAgeFilter、kszCapSMTPAuthenticate、kszCapMoveToTrash。

新增功能

WAP 推进路由器可扩展性允许自定义对消息的处理 -— 应用程序可截取不同类型的 WAP 推进消息,并重新将其路由至不同推进客户端,以通过 pushclient.h 中声明的 PushRouter_xxx 函数自定义处理。使用 Push Router 为通知注册推进客户端,以便在自定义处理的设备上接收特殊类型的推进消息。该功能与 SMS 截获无关。仅 GSM 设备支持该功能,CDMA 设备不支持该功能。

CAB 文件可用于供移动设备使用 — CAB 文件可用作传输机制来供 Pocket PC 2003 设备使用。

L2TP/IPSec VPN 支持 — 该技术允许移动设备将第 2 层隧道协议 (L2TP) 连接和网际协议安全 (IPSec) 一起使用。L2TP 和 IPSec 的组合(即 L2TP/IPSec)对于通过公用网络(例如 Internet)建立远程访问虚拟专用网 (VPN) 的连接,是一种安全性很高的技术。

文件资源管理器支持上下文菜单扩展 — 文件资源管理器现在可以支持已注册文件类型的上下文菜单扩展。它是通过 IContextMenu 界面并添加一些新的注册表项来实现的。

输入窗口的上下文属性是可控制的 — SHSetInputContext 和 SHGetInputContext 函数允许运行时修改和查询输入窗口的上下文属性。这些属性包括是否为字段启用自动更正和自动完成。SHSetInputContext 还支持预定义的上下文类(如“phone”或“e-mail”),这些类包含某些上下文功能的一组特定设置。

通知可强制设备启动 — aygshell.h 中定义了一个新 #define 和 SHNF_DISPLAYON,会在通知被触发时强制打开显示屏。

自动笔势识别是可控制的 — commctrl.h 中定义的 NM_RECOGNIZEGESTURE 通知代码为 Pocket PC 2003 应用程序开发人员提供了决定是否在公共控件中利用自动笔势识别的能力。

通过配置管理器可以配置更多的电子邮件服务 — 电子邮件配置服务提供程序 (CSP) 允许通过设备的配置管理器基础结构来配置网际协议电子邮件服务(如 IMAP4 和 POP3)。

可以注册收件箱的“自定义读取”或“组合窗体” — cemapi.h 中声明的 IMessageFormEx 和 IFormProviderEx 接口允许开发人员注册与其应用程序需求相匹配的“收件箱读取”或“组合窗体”自定义组。这种窗体可用于构造 EMS 或 MMS 客户端。

IPv6 现在受支持 — 多数 Pocket PC 2003 API 和组件现在都支持 IPv6 类型的寻址。IDccManSink2 是一种接收接口,支持 IPv6,用于向客户端应用程序通知设备连接情况。

蓝牙功能更好控制 — bthutil.h 中声明的 BthGetMode 和 BthSetMode 函数提供了查询蓝牙控制面板当前状态的功能,也可以修改其状态(Bluetooth Power Off [蓝牙电源关闭]、Connectable [可连接]、Discoverable [可发现] 等)。

WAP over SMS 受支持 — Pocket PC 2003 通过支持 WAP over SMS 来联接 Smartphone。

返回页首返回页首

小结

新的 Pocket PC 2003 SDK 包含您设计和开发用于新平台和设备的移动应用程序所需的所有内容。使用 Visual Studio .NET、Visual C# 或 Visual Basic .NET,您可以利用结构化 .NET 编程的所有好处 — 而且通过利用 eMbedded Visual C++ 4.0,您可以继续创建本机设备应用程序。多数针对 Pocket PC 2002 编写的应用程序仍然能运行在带有 Pocket PC 2003 的设备上这一事实,确保了投资可以持续获得回报。

现在就开始吧,利用 Pocket PC 2003 中的新功能,来丰富您的用户体验,完善您应用程序的功能。请下载 Pocket PC 2003 SDK

转到原英文页面


返回页首返回页首