&pspvSubject);
// 获取发送方的地址或电话号码
pMsg->GetProps((SPropTagArray *) &sptaEmail, MAPI_UNICODE, &cValues,
&pspvEmail);
// 检查消息中的“zzz”
if (wcsstr(pspvSubject->Value.lpszW, L"zzz") != NULL)
{
MessageBox(NULL, pspvSubject->Value.lpszW, pspvEmail->Value.lpszW,
MB_OK);
// 删除消息,并将其标记为已处理,以便该消息不显示在收件箱中
DeleteMessage(pMsgStore, pMsg, cbMsg, lpMsg, cbDestFolder, lpDestFolder,
pulEventType, pHandled);
}
else
// 一个“正常”的消息,通过
*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 [可发现] 等)。
- 支持 SMS 上的 WAP - Pocket PC 2003 与 Smartphone 一样,支持 SMS 上的 WAP。
小结
新 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(英文)。