windows mobile 新增的api

来源:互联网 发布:淘宝企业开店流程 编辑:程序博客网 时间:2024/05/04 16:45

Windows Mobile 5.0 提供很多新的 API。尽管这些新的 API 分布在许多不同的服务中,但它们都是为提高开发人员工作效率这一共同目标服务的。通过将很多经常执行的任务合并到操作系统中,应用程序开发人员可以集中精力去满足各个应用程序的特定需要。

Windows Mobile 5.0 第一次直接向托管开发人员公开操作系统功能。除了为现有操作系统功能提供的新托管类以外,这些新托管 API 还包括新增操作系统功能。

您可以将新的 Windows Mobile 5.0 API 分为三组:直接面向本机开发人员的新增 API;现在公开给托管开发人员的现有本机 API;本机和托管开发人员都可以使用的新增 API。

新增 API

本节描述直接面向本机开发人员的新增 API。

Direct3D Mobile

因为 Windows Mobile 设备包含越来越丰富的显示并且三维桌面计算机游戏广受欢迎,所以下一个合乎逻辑的步骤是为移动设备广泛生产三维游戏。Direct3D Mobile 现在使其有可能成为现实。

Direct3D Mobile 是桌面计算机的 Direct3D API 的移动设备实现。通过 Direct3D Mobile,开发人员可以使用他们的现有桌面计算机 Direct3D 技能和代码为 Windows Mobile 设备生成丰富的三维游戏环境。

Direct3D Mobile 充分利用图形硬件支持,并且能够用来在移动设备上开发高性能的三维透视图。除了能够合并创造性的三维用户界面以外,这一支持还使开发人员能够创建强大的三维游戏环境。

DirectDraw

对于需要直接操纵显示内存、提供高速度的二维图形或者合并数字视频的应用程序,Windows Mobile 5.0 提供了 DirectDraw API。通过在设备显示硬件之上提供公共抽象,DirectDraw 为应用程序开发人员提供以独立于设备的方式直接操纵设备显示的功能。

DirectDraw 不仅提供对绘制开发人员可以轻松查询的曲面的支持,而且为移动开发人员提供强大的能够取代 Game API (GAPI) 的应用程序编程接口,从而使应用程序可以充分利用硬件功能和性能。

DirectDraw 是桌面计算机的 DirectDraw API 的移动设备实现。桌面计算机开发人员可以利用他们的现有技能,并且可以将现有的 DirectDraw 代码和库迁移到 Windows Mobile 5.0 设备中。

DirectShow

现在,包含照相机的移动设备正在快速增加。对于希望创建与这些支持照相机的设备互操作的应用程序的开发人员,可以使用 DirectShow API。DirectShow 为应用程序开发人员提供了管理和访问照相机硬件的功能,从而使其可以捕获和播放高质量的图片以及流式传输视频。DirectShow 对各个照相机硬件的细节进行了抽象,从而为应用程序开发人员提供了公共、一致的编程接口。

DirectShow 支持各种各样的文件格式,并且开发人员可以自定义和扩充它以支持新的或专用的格式。与 Direct3D 和 DirectDraw 类似,DirectShow 是桌面计算机 API 的移动实现,并且使桌面计算机开发人员可以快速应用他们的现有技能以利用他们现有的代码投资。

全球定位系统

现在,很多移动设备在其内部包含 GPS,或者将它作为附件。过去,对于要访问 GPS 设备返回的信息的应用程序而言,要求这些应用程序使用串行 API 直接打开 GPS 设备。该技术产生了两个问题。首先,通过串行 API 工作需要编写相当多的代码,并且要求应用程序开发人员起码具有关于串行设备编程的中等程度的知识。其次,该体系结构将 GPS 数据的接收限制到当前连接的单个应用程序。Windows Mobile 5.0 通过 GPS 中间层驱动程序消除了这些问题。

GPS 中间层驱动程序提供了一个非常易于使用的 API,以便提供对 GPS 数据的共享访问。通过 GPS 中间层驱动程序,Windows Mobile 大大减少了与 GPS 设备交互所需的代码数量,并且使多个应用程序可以同时向 GPS 设备询问配置和定位信息。表 1 显示用于访问 GPS 中间层驱动程序的四个函数。

表 1. GPS 中间层驱动程序函数函数说明

GPSOpenDevice

连接到 GPS 中间层驱动程序

GPSCloseDevice

与 GPS 中间层驱动程序断开连接

GPSGetPosition

检索 GPS 位置信息

GPSGetDeviceState

检索有关 GPS 硬件的当前状态的信息

唯一地标识设备

对于需要唯一地标识单个设备的应用程序,Windows Mobile 5.0 包含四个 GetDeviceUniqueID 方法。通过使用 GetDeviceUniqueID,独立软件供应商 (ISV) 现在可以将每个软件许可证与特定设备联系在一起,从而轻松地保护知识产权。公司开发人员可以发现它对于跟踪针对特定设备的数据和应用程序分发很有用。

数字权利管理

数字权利管理 (DRM) 仍然是保护和分发知识产权的一个重要组成部分。对于某些应用程序开发人员而言,支持各种 DRM 引擎 API 之间的差异会降低应用程序的开发速度和代码的可移植性。

为了消除这些问题,Windows Mobile 5.0 提供了基于文件的数字权利管理 (FDRM) API。FDRM 在不同的 DRM 引擎之间提供了公共编程接口。该公共编程接口提高了开发人员工作效率和代码可移植性。开发人员现在只需要考虑 FDRM,而无需考虑设备使用的特定 DRM 引擎。

ActiveSync 交互

开发人员现在可以通过使用 ActiveSyncStartActiveSyncStop 方法从设备内部启动和中止 ActiveSync 同步进程。

其他 Windows Mobile 5.0 函数

表 2 显示本节中未描述的其他 Windows Mobile 5.0 函数。

表 2. 其他 Windows Mobile 5.0 函数函数说明

QueryPolicy

提供 DMProcessConfigXML 的简化替代函数,可供开发人员用来检索单个策略设置的值。

ExitWindowsEx

使应用程序可以关闭设备。在 Pocket PC 上,应用程序只是使用 ExitWindowsEx 来重新启动设备。在 Smartphone,应用程序使用 ExitWindowsEx 来关闭或重新启动设备。

DrawFocusRectColor

使用当前主题的颜色和样式绘制指定的矩形,就好像它具有焦点。

现在被公开为托管 API 的现有操作系统功能

这里列出的功能对于 Windows Mobile 平台而言并无新颖之处。真正的新功能是 Windows Mobile 5.0 提供的托管 API。通过提供这些托管 API,Windows Mobile 5.0 使托管开发人员可以直接访问上述功能,而无需本机代码的帮助,也无需考虑应用程序使用的 .NET Compact Framework 的具体版本。

电话

Windows Mobile 5.0 现在通过 Microsoft.WindowsMobile.Telephony.Phone 类公开基本的电话行为。通过使用新的 Phone 类的 Talk 方法,开发人员可以编写应用程序代码以启动电话呼叫,并且可以选择提示用户在呼叫之前验证号码。Phone 类需要对 Microsoft.WindowsMobile.Telephony 程序集的引用。

以下代码显示 Phone.Talk 方法的两种形式。

using Microsoft.WindowsMobile.Telephony; // ...Phone thePhone = new Phone();// Place a call to the specified numberthePhone.Talk("4255551212");// Place a call to the specified number after//  first prompting the user to verify the numberthePhone.Talk("4255551212", true);

Outlook Mobile

个人信息管理器 (PIM) 数据是很多移动设备应用程序的核心,并且 Windows Mobile 多年以来已经在 Pocket Outlook 中提供了优秀的 PIM 系统。Windows Mobile 5.0 现在通过“Microsoft.WindowsMobile.PocketOutlook”命名空间和程序集中的类将 Pocket Outlook 直接公开给托管开发人员。通过新的托管 Pocket Outlook API,开发人员可以轻松地将 PIM 合并为他们的应用程序的一部分。表 3 中显示部分常用类。

表 3. 常用的 Pocket Outlook 托管类类说明

OutlookSession

代表 Pocket Outlook 应用程序公开电子邮件、SMS 帐户、约会、联系人和任务的属性。

Appointment

代表一块预定的时间。包含用于标识约会详细信息以及应该如何显示约会提醒的属性。提供应用程序可以处理以便获得约会更改通知的事件。

Contact

代表个人或组织的信息记录。包含 60 个以上用于通过相应事件跟踪联系人信息的不同属性,从而使应用程序可以轻松地跟踪用户或应用程序对联系人数据所做的更改。

Task

代表可诉的待办项。包含各种标识任务详细信息(包括进度以及应该如何显示任务提醒)的属性。提供应用程序可以处理以便获得任务更改通知的事件。

新的 Pocket Outlook 托管对象模型大大简化了与 Pocket Outlook 的应用程序交互。下面的代码显示添加新约会是如此容易。

using Microsoft.WindowsMobile.PocketOutlook;// ...// Create the Appointment and set the detailsAppointment theAppointment = new Appointment();// Set the subjecttheAppointment.Subject = "MEDC Precon";// Set the appointment to start on May 9, at 9:00 A.M.theAppointment.Start  = new DateTime(, 05, 09, 09, 00, 00);// The appointment lasts for eight hourstheAppointment.Duration = new TimeSpan(08, 00, 00);// Issue a reminder by having the device vibratetheAppointment.ReminderVibrate = true;// Repeat the reminder until the user dismisses ittheAppointment.ReminderRepeat = true;// Create the Outlook session and add the appointment//  to the Outlook Appointment Folderusing (OutlookSessionsession = new OutlookSession()){ session.Appointments.Items.Add(theAppointment);}

图 1 显示设备运行前面的代码之后的 Pocket Outlook 日历。

Windows Mobile 5.0新增API介绍

1. Pocket Outlook 中刚刚创建的约会

 

Microsoft.WindowsMobile.PocketOutlook.EmailAccount”和“Microsoft.WindowsMobile.PocketOutlook.SmsAccount”命名空间为电子邮件和 SMS 消息提供了托管支持。这些命名空间中的类使托管代码开发人员能够容易地将消息处理集成到他们的应用程序中。

对于需要集成电子邮件功能的托管应用程序开发人员,EmailAccount 类提供了完整的电子邮件功能,包括对附件的支持。下面的代码演示开发人员可以如此容易地发送电子邮件。该示例使用 ChooseContactDialog 提示用户选择要向其发送电子邮件的联系人。然后,代码创建一个电子邮件,附加一个 Pocket Excel 工作簿,然后通过使用设备的主电子邮件帐户将该邮件发送给所选择的联系人。

using Microsoft.WindowsMobile.PocketOutlook;using Microsoft.WindowsMobile.Forms;// ...ChooseContactDialogcontactDialog = new ChooseContactDialog();contactDialog.Title = "Select user to send message";if (contactDialog.ShowDialog() == DialogResult.OK){ EmailMessage message = new EmailMessage(); message.To.Add(     new Recipient(contactDialog.SelectedContact.Email1Address)); message.Subject = "MEDC Session List"; message.BodyText =      "I've attached the list of MEDC sessions - hope to see you there"; message.Attachments.Add(new Attachment(@"/My Documents/Sessions.xls")); using (OutlookSessionsession = new OutlookSession()) {   session.EmailAccounts[0].Send(message); }}

SMS 仍然是一种非常流行且有效的通信机制。Windows Mobile 5.0 托管应用程序开发人员可以将 SMS 信息的发送和接收完全集成到他们的应用程序中。

下面的代码使用 ChooseContactDialog 提示用户选择联系人。然后,代码使用设备的已配置的 SMS 帐户向用户选择的联系人发送邮件,然后请求回执。

using Microsoft.WindowsMobile.PocketOutlook;using Microsoft.WindowsMobile.Forms;// ...ChooseContactDialogcontactDialog = new ChooseContactDialog();contactDialog.Title = "Select user to send message";if (contactDialog.ShowDialog() == DialogResult.OK){ // Construct message requesting delivery receipt SmsMessage message = new SmsMessage(     contactDialog.SelectedContact.MobileTelephoneNumber,      "R U Going to the Keynote?"); SmsMessage message.RequestDeliveryReport = true; // Send message  message.Send();}

Windows Mobile 5.0 还使 SMS 邮件的截获和处理变得容易。开发人员可以使用“Microsoft.WindowsMobile.PocketOutlook.MessageInterception”命名空间中的类(位于 Microsoft.WindowsMobile.PocketOutlook 程序集中)创建 .NET Compact Framework 应用程序,以截获和处理发送到设备的 SMS 信息。

该信息截获机制具有高度的可配置性,从而使应用程序可以在 SMS 信息中注册基于内容的兴趣。开发人员可以对设备进行编程,以便基于发送者、接收者或信息内容向应用程序发出有关信息的通知。开发人员还可以对截获系统进行编程,以便在请求通知的应用程序尚未运行时启动它。表 4 显示一些信息截获类。

表 4. 常用的 SMS 信息截获托管类类说明

MessageInteceptor

在满足指定条件的信息到达时引发事件。该类根据情况在请求通知的应用程序尚未运行时启动它。

MessageCondition

标识要满足的信息条件。

MessageInteceptorEventHandler

由那些注册以便接收信息通知的类实现的委托类型。

配置管理器

Windows Mobile 引入了配置管理器,它极大地简化了 Windows Mobile 设备的配置和部署,这是因为开发人员可以通过使用 XML 设置设备的几乎所有可配置的方面。通过使用 Microsoft.WindowsMobile.Configuration.ConfigurationManager 类,托管开发人员现在可以充分利用该功能。

ConfigurationManager 类包含两个静态方法:ProcessConfigurationTestConfiguration。托管开发人员可以使用 ProcessConfiguration 配置电子邮件、安全策略、本地化、主屏幕、虚拟专用网络 (VPN) 设置、文件系统以及其他设置。该类向开发人员提供了对所有设备配置问题的一站式解决方式。TestConfiguration 使托管开发人员可以在不影响任何设备设置的前提下验证配置 XML 的有效性。下面的示例演示了如何使用 ProcessConfiguration 将 MSDN Mobility Web 站点添加到设备浏览器收藏夹中。

using System.Xml;using Microsoft.WindowsMobile.Configuration;// ...string configurationXml = @"<wap-provisioningdoc>     <characteristic type='BrowserFavorite'>       <characteristic type='MSDNMobility'>         <parm name='URL' value='http://msdn.microsoft.com/mobility'/>       </characteristic>     </characteristic>   </wap-provisioningdoc>";// Load XMLinto the DOMXmlDocument configurationXmlDoc = new XmlDocument();configurationXmlDoc.LoadXml(configurationXml);// Send to Configuration ManagerConfigurationManager.ProcessConfiguration(configurationXmlDoc, false);

本机和托管开发人员都可以使用的新增 API

随着 Windows Mobile 平台的发展,越来越多的本机和托管开发人员正在开发丰富的、完善的应用程序。为了满足这两组开发人员的共同需要,Windows Mobile 5.0 的很多新功能直接公开本机和托管 API。包括托管 API 以使其成为 Windows Mobile 5.0 平台本身的一部分,使得这些 API 可供所有托管开发人员使用,而无需考虑应用程序使用的 .NET Compact Framework 的具体版本。

State and Notification Broker API

Windows Mobile 5.0 引入了一种新的非常强大的工具,称为 State and Notification Broker API。State and Notification Broker API 提供用于存储设备、应用程序和系统状态信息的统一机制。它不仅是一个统一的存储,而且还提供了集中式通知体系结构,从而使应用程序可以容易地注册通知,并且可以选择在感兴趣的值更改时启动应用程序。该模型还使应用程序可以容易地共享它们自己的状态信息。

Windows Mobile 5.0 设备随附了远远超过 100 个不同的状态值,它们可以通过 State and Notification Broker API 获得。这些可用值提供各种各样的,与设备本身和标准 Windows Mobile 5.0 应用程序有关的信息。下表只是可以通过 State and Notification Broker 获得的信息的一部分示例:

活动应用程序

设备的 ActiveSync 状态

当前电池电平

是否有照相机连接到该设备

是否插入了耳机

Media Player 中当前播放的歌曲名称

未读的 SMS 信息个数

未读的电子邮件个数

当前是否正在通话

当前是否正在进行会议呼叫

当前是否可以使用 GPRS 连接

设备当前是否连接到 VPN

未接电话呼叫的个数

电话的移动运营商的名称

当天预定的任务数

除了上述项以外,原始设备制造商 (OEM) 和应用程序开发人员还可以扩充该列表。开发人员可以轻松地设计应用程序以检索任何 State and Notification Broker API 存储值,并且如果需要的话,则开发人员可以设计应用程序以监视一个或多个值的更改。

State and Notification Broker 的基础实现依赖于注册表。每个提供程序都会创建一个注册表项,向该项添加值,以表示各个状态值。在提供程序创建该注册表项以后,State and Notification Broker 会监视该值的更改,并且自动通知已经注册了对该值的兴趣的所有各方。所有系统状态属性都存储在 HKEY_CURRENT_USER/System/State HKEY_LOCAL_MACHINE/System/State 下面。这些项都被加以保护,允许不受信任的应用程序进行只读访问。应用程序可以将它们自己的状态值添加到 HKEY_CURRENT_USER/Software/StateHKEY_LOCAL_MACHINE/Software/State 中。

如果本机开发人员希望检索通知,则他们具有多个选择,包括 Windows 消息、回调函数和消息队列。那些希望创建通知提供程序的开发人员可以在某个适当的注册表位置下面创建一个项,并且使用 RegistrySetDWORDRegistrySetString 函数来创建和修改该项下面的值。表 5 列出常用的本机 State and Notification Broker 函数。

表 5. 常用 State and Notification Broker API 本机函数函数说明

RegistryNotifyApp

通过将 Windows 消息发送到应用程序窗口,将指定状态值的更改通知给应用程序。如果该应用程序尚未运行,则 State and Notification Broker API 会启动它。

RegistryNotifyWindow

通过将 Windows 消息发送到应用程序窗口,将指定状态值的更改通知给应用程序。

RegistryNotifyMsgQueue

通过向命名的消息队列发送通知,将指定状态值的更改通知给应用程序。

RegistryNotifyCallback

通过调用传递的回调函数,将指定状态值的更改通知给应用程序。

RegistryGetDWORD / RegistryGetString

检索当前状态值。

RegistrySetDWORD / RegistrySetString

由 State and Notification Broker API 提供程序用来创建和修改状态值。

RegistryTestExchangeDWORD

由 State and Notification Broker API 提供程序用来有条件地修改状态值,并且将测试和更新作为单个原子操作予以执行。

托管开发人员通过使用属于“Microsoft.WindowsMobile.Status”命名空间和同名程序集的类与 State and Notification Broker 交互。标准委托机制用于向托管类发送状态更改通知。表 6 显示常用托管类的列表。

表 6. 常用 State and Notification Broker API 托管类函数说明

RegistryState

封装被监视的状态值,包括检索值、监视该值的更改以及在该值更改时根据情况启动应用程序。

SystemState

提供公共系统状态值之上的抽象,并且通过属性提供对这些值的访问。

图片选择对话框

随着应用程序越来越多地合并了照片和图形,这些应用程序需要一种容易的方式来向用户呈现图片列表,以供用户选择。为了满足这一需要,Windows Mobile 5.0 提供了图片选择对话框。该对话框通过 GetFileNameEx 函数提供给本机开发人员;对于托管开发人员,它是通过 Microsoft.WindowsMobile.Forms.SelectPictureDialog 类公开的。图 2 显示图片选择对话框。

Windows Mobile 5.0新增API介绍

2. 图片选择对话框。单击缩略图查看大图像。

图片选择对话框具有高度的可配置性,并且使应用程序开发人员可以用多种方式控制该对话框的行为,包括限制用户可能浏览图像的位置、控制是否允许用户浏览来自附加照相机(如果存在)的图像以及应该如何处理受 DRM 保护的文件。

照相机捕获 API/SHCameraCapture

支持照相机的设备极为受欢迎。由于这些设备的使用范围是如此之广,因此应用程序开发人员现在有机会通过将静止图像和视频图像的捕获直接集成到他们的应用程序中来切切实实地增强用户体验。为了使应用程序开发人员能够轻松地提供该功能,Windows Mobile 5.0 提供了照相机捕获对话框。

照相机捕获对话框为应用程序开发人员提供一种独立于设备的方式,以便将照片、视频和带声音的视频的捕获集成到他们的应用程序中。该对话框为开发人员提供了对照相机捕获过程的完整控制,包括捕获的类型、质量和最大长度(仅限于视频)。本机开发人员通过 SHCameraCapture 函数利用照相机捕获对话框;托管开发人员使用 Microsoft.WindowsMobile.Forms.CameraCaptureDialog

 

Pocket Outlook 增强功能

Pocket Outlook 向用户和应用程序开发人员提供了易于使用的 PIM。将 Pocket Outlook 集成到您的应用程序中可以同时使您的应用程序和它的用户获益。用户通过具有一致的 PIM 体验和数据获益,而无论他们是直接与 Pocket Outlook 交互,还是通过您的应用程序与其交互。应用程序通过有机会立即合并用户的完整 PIM 数据而获益。

为了进一步简化应用程序与 Pocket Outlook 交互的方式以及为应用程序提供合并更为丰富的 Pocket Outlook 交互的机会,Pocket Outlook 向本机和托管开发人员提供了多种新功能。

联系人选择对话框

正如它的名称所暗示的那样,联系人选择对话框使应用程序能够显示功能齐全的联系人选择对话框 — 就像 Pocket Outlook 显示一样。该对话框提供了可供用户选择整个联系人或单个联系人属性(如电话号码或电子邮件地址)的筛选功能。当该对话框显示时,用户可以直接选择联系人,或者可以输入联系人姓名的一部分,后者会自动筛选列表以便只显示匹配的姓名。该对话框还可以选择支持用户添加新联系人。本机开发人员可以通过 ChooseContact 函数使用联系人选择对话框;托管开发人员需要使用 ChooseContactDialog 类。

下面的示例演示了如何从 C++ 和 C# 中使用联系人选择对话框。在每个示例中,应用程序都显示限制用户选择现有联系人的对话框。为了使示例保持简单,应用程序随后在 MessageBox 中显示所选联系人的姓名。

下面的代码演示 C++ 中的联系人选择对话框。

#include // ...HRESULT hr = E_FAIL;CHOOSECONTACT cc = {0};cc.cbSize = sizeof (cc);cc.dwFlags = CCF_RETURNCONTACTNAME | CCF_HIDENEW;// Display the contact selection dialoghr = ChooseContact(&cc);// Show the selected nameMessageBox(NULL, cc.bstrContactName, TEXT("Selected Contact"), MB_OK); // Free memorySysFreeString(cc.bstrContactName);

下面的代码演示 C# 中的联系人选择对话框。

using Microsoft.WindowsMobile.PocketOutlook;using Microsoft.WindowsMobile.Forms;// ...ChooseContactDialogcontactDialog = new ChooseContactDialog();contactDialog.HideNew = true;contactDialog.ShowDialog();// Show the selected nameMessageBox.Show(contactDialog.SelectedContactName, "Selected Contact");

图 3 说明了所显示的对话框。

Windows Mobile 5.0新增API介绍

3. 新的 ChooseContactDialog 联系人选择器类

事件通知

由于引入了事件通知,Windows Mobile 5.0 现在使应用程序可以比以往任何时候都更密切地与 Pocket Outlook 合作。通过事件通知,本机和托管应用程序都可以监视 Pocket Outlook 文件夹内部的成员添加、删除和修改。

要注册以接收这些通知,本机应用程序必须访问感兴趣的 Folder 对象上的 IItem 接口,然后调用 IItem.SetProp 方法以便将属性 PIMPR_FOLDERNOTIFICATION 设置为表 7 中的值之一。

表 7. Pocket Outlook 文件夹通知标志通知标志说明

PIMFOLDERNOTIFICATION_LOCAL

在从当前进程中进行更改时,向应用程序发送通知。

PIMFOLDERNOTIFICATION_REMOTE

在从其他进程中进行更改时,向应用程序发送通知。

PIMFOLDERNOTIFICATION_ALL

在从任何进程中进行更改时,向应用程序发送通知。

当更改发生时,消息被发送到在对 IPOutlookApp.Logon 的调用中注册的窗口。表 8 显示可能的消息。

表 8. Pocket Outlook 通知消息通知消息说明

PIM_ITEM_CREATED_LOCAL

该进程创建了一个 PIM 项。

PIM_ITEM_DELETED_LOCAL

该进程删除了一个 PIM 项。

PIM_ITEM_CHANGED_LOCAL

该进程更改了一个 PIM 项。

PIM_ITEM_CREATED_REMOTE

另一个进程创建了一个 PIM 项。

PIM_ITEM_DELETED_REMOTE

另一个进程删除了一个 PIM 项。

PIM_ITEM_CHANGED_REMOTE

另一个进程更改了一个 PIM 项。

托管应用程序使用标准委托机制来处理由 AppointmentCollectionContactCollectionTaskCollection 公开的 ListChanged 事件。借助于相应文件夹中的 Items 属性可以最为容易地访问这些集合。下面的示例演示如何注册委托以处理对约会集合所做的更改。

using Microsoft.WindowsMobile.PocketOutlook;// ...OutlookSessionsession = new OutlookSession();session.Appointments.Items.ListChanged +=   new ListChangedEventHandler(Items_ListChanged);// ListChanged Event Handlervoid Items_ListChanged(object sender, ListChangedEventArgs eventArgs){ // Details of change are found in eventArgs}

除了跟踪对某个文件夹内的所有对象的更改以外,托管开发人员还可以获得有关对任何特定 AppointmentContactTask 所做更改的通知。这些类中的每个属性都具有相应的事件。例如,要获得有关对 AppointmentStart 属性所做更改的通知,请处理 Appointment.StartChanged 事件。要获得有关对 ContactBusinessTelephoneNumber 所做更改的通知,请处理 Contact.BusinessTelephoneNumberChanged 事件。

自定义属性

很多应用程序不仅使用 Pocket Outlook 提供的数据,而且还需要扩充标准 Pocket Outlook 对象模型以跟踪附加数据。过去,那些希望自己的应用程序这么做的开发人员必须显式管理扩充数据的存储及其与 Pocket Outlook 对象的相互关系。Windows Mobile 5.0 通过引入自定义属性消除了手动管理扩充内容的需要。

自定义属性使本机和托管应用程序都可以将自定义数据直接与 AppointmentContactTask 对象相关联。Pocket Outlook 自动将这一关联数据存储到它的可以通过相关联的 AppointmentContactTask 对象直接访问的数据存储区中。自定义属性可以是从简单类型(如 int)到复杂的自定义对象的任意类型。要访问自定义属性,本机应用程序开发人员可以使用 IItem.GetProps/IItem.SetProps;托管开发人员可以使用由 Appointment.PropertiesContact.PropertiesTask.Properties 公开的 PimPropertySet 属性。

邮件应用程序管理

消息处理(包括 SMS 和电子邮件)是包含从轻松的会话到详细业务过程信息的所有内容的现代通信的核心。很多应用程序可以从下列做法中获益:紧密集成消息处理,从而向用户提供在直接与应用程序交互以及与应用程序的相关 SMS 或电子邮件信息交互之间的无缝体验。Windows Mobile 5.0 通过引入多个新的消息处理 API,使开发人员可以轻松地提供这一无缝体验。

这些新的消息 API 向本机和托管开发人员提供了轻松访问设备消息处理程序中的多个功能的方式。这些功能包括显示现有的电子邮件、使用消息处理系统的 SMS 和 Email 窗体来撰写新邮件以及控制消息处理系统中的当前活动帐户的功能。通过使用这些 API,开发人员可以向用户提供在应用程序和设备消息处理程序之间的平稳过渡,从而给予用户熟悉的一致的消息处理体验。表 9 显示本机消息处理系统函数的列表,表 10 显示托管消息处理系统函数。

表 9. 本机邮件应用程序管理函数函数说明MailComposeMessage显示包含任何内容或附件的信息撰写窗体。

MailDisplayMessage

使用标准信息显示窗体显示现有信息。

MailSwitchToAccount

给予消息处理程序焦点并切换到指定的帐户。

MailSwitchToFolder

给予消息处理程序焦点并切换到指定的文件夹。

MailSyncMessages

将指定的帐户与邮件服务器同步。

表 10. 托管邮件应用程序管理函数函数说明

MessagingApplication.DisplayComposeForm

显示包含任何内容或附件的信息撰写窗体。

MessagingApplication.DisplayMessage

显示现有信息。

MessagingApplication.SwitchToAccount

给予消息处理程序焦点并切换到指定的帐户。

MessagingApplication.Synchronize

将指定的帐户与邮件服务器同步。

 

http://www.longtengwang.com/Article/soft/move/windows/200710/7049_3.html

原创粉丝点击