本文大多来自网上搜集
作者:Jim Wilson 来源:microsoft.com 时间:2005年10月21日 9:51 阅读7178次 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
摘要:从开发人员的观点来了解 Windows Mobile 版本 5.0 中的新增功能。 简介基于 Windows Mobile 的设备(包括 Pocket PC 和 Smartphone)在全世界得到了广泛部署。是什么原因使这些具有高度可移动性的设备广受欢迎呢?这主要归功于它们迅速改进的硬件功能。这些设备现在提供了高质量的显示、照相机、更大的内存和不久以前还难以想像的强大通信功能。Windows Mobile 5.0 使开发人员能够轻松地利用这些强大的设备功能和其他更多的功能。 Windows Mobile 5.0 引入新一代平台应用程序编程接口 (API),这些接口公开了丰富的多媒体支持、丰富的二维和三维绘图功能、与照相机或全球定位系统 (GPS) 设备等设备硬件之间的轻松交互、与 Pocket Outlook 的简单交互和集成以及更为完善的通信功能。这些新的 API 不仅提供了更为出色的应用程序功能,而且还通过将这些功能的详细信息封装在平台中,从而使开发人员能够重点关注他们应用程序功能的特定需要,从而提高了开发人员的工作效率。 Windows Mobile 5.0 是第一个同时公开本机版本和托管版本平台 API 的平台,从而使开发人员可以基于他们的技能和应用程序适应性选择最适当的开发模型。Windows Mobile 5.0 还合并了很多 API 增强功能,以便在 Windows Mobile 设备和 Windows 桌面以及服务器计算机平台之间提供更大的连续性,从而使服务器开发人员可以跨越所有 Windows 平台使用公共的技能集。 本文从开发人员的角度说明 Windows Mobile 5.0 中的这些新功能,并且说明开发人员用来创建 Windows Mobile 5.0 解决方案的工具。以下各部分概述其中一些最值得注意的 Windows Mobile 5.0 功能。 改进的工作效率 下表概述 Windows Mobile 5.0 改进开发人员工作效率的一些方式:
多媒体支持 下表概述 Windows Mobile 5.0 的丰富多媒体支持:
托管代码支持 Windows Mobile 5.0 为托管代码开发人员提供了最好的支持。下表概述 Windows Mobile 5.0 的托管代码支持:
Windows Mobile 5.0 APIWindows Mobile 5.0 提供很多新的 API。尽管这些新的 API 分布在许多不同的服务中,但它们都是为提高开发人员工作效率这一共同目标服务的。通过将很多经常执行的任务合并到操作系统中,应用程序开发人员可以集中精力去满足各个应用程序的特定需要。 Windows Mobile 5.0 第一次直接向托管开发人员公开操作系统功能。除了为现有操作系统功能提供的新托管类以外,这些新托管 API 还包括新增操作系统功能。 您可以将新的 Windows Mobile 5.0 API 分为三组:直接面向本机开发人员的新增 API;现在公开给托管开发人员的现有本机 API;本机和托管开发人员都可以使用的新增 API。 新增 API 本节描述直接面向本机开发人员的新增 API。 Direct3D Mobile
DirectDraw
DirectShow
全球定位系统 现在,很多移动设备在其内部包含 GPS,或者将它作为附件。过去,对于要访问 GPS 设备返回的信息的应用程序而言,要求这些应用程序使用串行 API 直接打开 GPS 设备。该技术产生了两个问题。首先,通过串行 API 工作需要编写相当多的代码,并且要求应用程序开发人员起码具有关于串行设备编程的中等程度的知识。其次,该体系结构将 GPS 数据的接收限制到当前连接的单个应用程序。Windows Mobile 5.0 通过 GPS 中间层驱动程序消除了这些问题。 GPS 中间层驱动程序提供了一个非常易于使用的 API,以便提供对 GPS 数据的共享访问。通过 GPS 中间层驱动程序,Windows Mobile 大大减少了与 GPS 设备交互所需的代码数量,并且使多个应用程序可以同时向 GPS 设备询问配置和定位信息。表 1 显示用于访问 GPS 中间层驱动程序的四个函数。
唯一地标识设备 对于需要唯一地标识单个设备的应用程序,Windows Mobile 5.0 包含四个 GetDeviceUniqueID 方法。通过使用 GetDeviceUniqueID,独立软件供应商 (ISV) 现在可以将每个软件许可证与特定设备联系在一起,从而轻松地保护知识产权。公司开发人员可以发现它对于跟踪针对特定设备的数据和应用程序分发很有用。 数字权利管理 数字权利管理 (DRM) 仍然是保护和分发知识产权的一个重要组成部分。对于某些应用程序开发人员而言,支持各种 DRM 引擎 API 之间的差异会降低应用程序的开发速度和代码的可移植性。 为了消除这些问题,Windows Mobile 5.0 提供了基于文件的数字权利管理 (FDRM) API。FDRM 在不同的 DRM 引擎之间提供了公共编程接口。该公共编程接口提高了开发人员工作效率和代码可移植性。开发人员现在只需要考虑 FDRM,而无需考虑设备使用的特定 DRM 引擎。 ActiveSync 交互 开发人员现在可以通过使用 ActiveSyncStart 和 ActiveSyncStop 方法从设备内部启动和中止 ActiveSync 同步进程。 其他 Windows Mobile 5.0 函数 表 2 显示本节中未描述的其他 Windows Mobile 5.0 函数。
现在被公开为托管 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 number thePhone.Talk("4255551212"); // Place a call to the specified number after // first prompting the user to verify the number thePhone.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 中显示部分常用类。
新的 Pocket Outlook 托管对象模型大大简化了与 Pocket Outlook 的应用程序交互。下面的代码显示添加新约会是如此容易。 using Microsoft.WindowsMobile.PocketOutlook; // ... // Create the Appointment and set the details Appointment theAppointment = new Appointment(); // Set the subject theAppointment.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 hours theAppointment.Duration = new TimeSpan(08, 00, 00); // Issue a reminder by having the device vibrate theAppointment.ReminderVibrate = true; // Repeat the reminder until the user dismisses it theAppointment.ReminderRepeat = true; // Create the Outlook session and add the appointment // to the Outlook Appointment Folder using (OutlookSessionsession = new OutlookSession()) { session.Appointments.Items.Add(theAppointment); } 图 1 显示设备运行前面的代码之后的 Pocket Outlook 日历。 图 1. Pocket Outlook 中刚刚创建的约会 消息处理 除了提供对 PIM 数据的访问以外,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 显示一些信息截获类。
配置管理器 Windows Mobile 引入了配置管理器,它极大地简化了 Windows Mobile 设备的配置和部署,这是因为开发人员可以通过使用 XML 设置设备的几乎所有可配置的方面。通过使用 Microsoft.WindowsMobile.Configuration.ConfigurationManager 类,托管开发人员现在可以充分利用该功能。 ConfigurationManager 类包含两个静态方法:ProcessConfiguration 和 TestConfiguration。托管开发人员可以使用 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 DOM XmlDocument configurationXmlDoc = new XmlDocument(); configurationXmlDoc.LoadXml(configurationXml); // Send to Configuration Manager ConfigurationManager.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 获得的信息的一部分示例:
除了上述项以外,原始设备制造商 (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/State 和 HKEY_LOCAL_MACHINE/Software/State 中。 如果本机开发人员希望检索通知,则他们具有多个选择,包括 Windows 消息、回调函数和消息队列。那些希望创建通知提供程序的开发人员可以在某个适当的注册表位置下面创建一个项,并且使用 RegistrySetDWORD 或 RegistrySetString 函数来创建和修改该项下面的值。表 5 列出常用的本机 State and Notification Broker 函数。
托管开发人员通过使用属于“Microsoft.WindowsMobile.Status”命名空间和同名程序集的类与 State and Notification Broker 交互。标准委托机制用于向托管类发送状态更改通知。表 6 显示常用托管类的列表。
图片选择对话框 随着应用程序越来越多地合并了照片和图形,这些应用程序需要一种容易的方式来向用户呈现图片列表,以供用户选择。为了满足这一需要,Windows Mobile 5.0 提供了图片选择对话框。该对话框通过 GetFileNameEx 函数提供给本机开发人员;对于托管开发人员,它是通过 Microsoft.WindowsMobile.Forms.SelectPictureDialog 类公开的。图 2 显示图片选择对话框。 图 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 dialog hr = ChooseContact(&cc); // Show the selected name MessageBox(NULL, cc.bstrContactName, TEXT("Selected Contact"), MB_OK); // Free memory SysFreeString(cc.bstrContactName); 下面的代码演示 C# 中的联系人选择对话框。 using Microsoft.WindowsMobile.PocketOutlook; using Microsoft.WindowsMobile.Forms; // ... ChooseContactDialogcontactDialog = new ChooseContactDialog(); contactDialog.HideNew = true; contactDialog.ShowDialog(); // Show the selected name MessageBox.Show(contactDialog.SelectedContactName, "Selected Contact"); 图 3 说明了所显示的对话框。 图 3. 新的 ChooseContactDialog 联系人选择器类 事件通知 由于引入了事件通知,Windows Mobile 5.0 现在使应用程序可以比以往任何时候都更密切地与 Pocket Outlook 合作。通过事件通知,本机和托管应用程序都可以监视 Pocket Outlook 文件夹内部的成员添加、删除和修改。 要注册以接收这些通知,本机应用程序必须访问感兴趣的 Folder 对象上的 IItem 接口,然后调用 IItem.SetProp 方法以便将属性 PIMPR_FOLDERNOTIFICATION 设置为表 7 中的值之一。
当更改发生时,消息被发送到在对 IPOutlookApp.Logon 的调用中注册的窗口。表 8 显示可能的消息。
托管应用程序使用标准委托机制来处理由 AppointmentCollection、ContactCollection 和 TaskCollection 公开的 ListChanged 事件。借助于相应文件夹中的 Items 属性可以最为容易地访问这些集合。下面的示例演示如何注册委托以处理对约会集合所做的更改。 using Microsoft.WindowsMobile.PocketOutlook; // ... OutlookSessionsession = new OutlookSession(); session.Appointments.Items.ListChanged += new ListChangedEventHandler(Items_ListChanged); // ListChanged Event Handler void Items_ListChanged(object sender, ListChangedEventArgs eventArgs) { // Details of change are found in eventArgs } 除了跟踪对某个文件夹内的所有对象的更改以外,托管开发人员还可以获得有关对任何特定 Appointment、Contact 或 Task 所做更改的通知。这些类中的每个属性都具有相应的事件。例如,要获得有关对 Appointment 的 Start 属性所做更改的通知,请处理 Appointment.StartChanged 事件。要获得有关对 Contact 的 BusinessTelephoneNumber 所做更改的通知,请处理 Contact.BusinessTelephoneNumberChanged 事件。 自定义属性 很多应用程序不仅使用 Pocket Outlook 提供的数据,而且还需要扩充标准 Pocket Outlook 对象模型以跟踪附加数据。过去,那些希望自己的应用程序这么做的开发人员必须显式管理扩充数据的存储及其与 Pocket Outlook 对象的相互关系。Windows Mobile 5.0 通过引入自定义属性消除了手动管理扩充内容的需要。 自定义属性使本机和托管应用程序都可以将自定义数据直接与 Appointment、Contact 和 Task 对象相关联。Pocket Outlook 自动将这一关联数据存储到它的可以通过相关联的 Appointment、Contact 或 Task 对象直接访问的数据存储区中。自定义属性可以是从简单类型(如 int)到复杂的自定义对象的任意类型。要访问自定义属性,本机应用程序开发人员可以使用 IItem.GetProps/IItem.SetProps;托管开发人员可以使用由 Appointment.Properties、Contact.Properties 和 Task.Properties 公开的 PimPropertySet 属性。 邮件应用程序管理 消息处理(包括 SMS 和电子邮件)是包含从轻松的会话到详细业务过程信息的所有内容的现代通信的核心。很多应用程序可以从下列做法中获益:紧密集成消息处理,从而向用户提供在直接与应用程序交互以及与应用程序的相关 SMS 或电子邮件信息交互之间的无缝体验。Windows Mobile 5.0 通过引入多个新的消息处理 API,使开发人员可以轻松地提供这一无缝体验。 这些新的消息 API 向本机和托管开发人员提供了轻松访问设备消息处理程序中的多个功能的方式。这些功能包括显示现有的电子邮件、使用消息处理系统的 SMS 和 Email 窗体来撰写新邮件以及控制消息处理系统中的当前活动帐户的功能。通过使用这些 API,开发人员可以向用户提供在应用程序和设备消息处理程序之间的平稳过渡,从而给予用户熟悉的一致的消息处理体验。表 9 显示本机消息处理系统函数的列表,表 10 显示托管消息处理系统函数。
工具和技术Microsoft 为那些创建面向 Windows Mobile 5.0 平台的应用程序的开发人员提供了许多工具和技术。这些工具简化了开发过程并提高了开发人员工作效率。本节将描述这些工具和技术。 Visual Studio Visual Studio 是 Windows Mobile 5.0 开发的首选工具,它提供了多产的开发体验以及与 Windows Mobile 5.0 平台的最完整集成。现代应用程序开发要求开发人员使用多种技能,因为这些应用程序通常必须混合使用服务器、桌面计算机和设备组件。在很多情况下,提供完整的解决方案还可能涉及到组合本机和托管代码。Visual Studio2005 是第一个使开发人员能够从单个工具中为上述所有环境进行生成、调试和部署的开发平台。适合于所有应用程序类型的单个开发工具为开发人员提供了一致的熟悉的开发体验,从而使其能够利用在开发人员培训和代码库方面的投资,而且还能更加有效地工作。 集成式本机开发 Visual Studio 包含对使用 C/C++ 开发设备应用程序的充分支持。它是 eMbedded Visual C++ 4.0 的后续开发环境。Visual Studio 向 C/C++ 设备开发人员提供了完整的工具集,并且支持以前可以通过 eMbedded Visual C++ 4.0 使用的相同向导和工具。Visual Studio 包含用于创建 MFC、ATL 和 Win32 项目的熟悉的应用程序向导。当开发人员向项目中添加类时,Visual Studio 为 ATL、MFC 和 C++ 提供了整套类向导。它还包含其他熟悉的工具,如设备交叉编译器、资源编辑器、调试器和模拟器。Visual Studio 还充分集成了设备 SDK。 除了向 C/C++ 开发人员提供熟悉的功能以外,Visual Studio 还引入了很多新功能,如智能感知、集成测试、对丰富的 Team System 功能集的访问等等。通过使用 Visual Studio,设备 C/C++ 开发人员自动拥有了对各种可以提高 Visual Studio 开发人员工作效率的功能的访问权限。 通过将设备 C/C++ 开发集成到 Visual Studio 中,开发人员现在能够对服务器、桌面计算机和设备应用程序使用单个技能集。开发人员不再需要为服务器和桌面计算机应用程序去了解一个工具,而为设备应用程序去了解不同的工具。这还意味着,在开发 C/C++ 设备应用程序时,桌面计算机开发人员不再需要放弃对于 Visual Studio 可用的丰富功能集和第三方工具。 这对于在设备上用本机和托管代码工作的开发人员而言,也是一个非常好的消息,因为他们现在也可以使用单个工具。对于需要创建本机和托管项目以作为单个应用程序的一部分的开发人员而言,甚至可以将本机和托管项目放到单个 Visual Studio 解决方案中。 移动设备 C/C++ 开发人员没有受到用 Visual Studio 开发 Windows Mobile 5.0 应用程序的限制。Visual Studio 支持从 Windows Mobile 和更高版本中为所有 Windows Mobile 平台开发本机移动设备应用程序。这意味着面向运行 Windows Mobile、Windows Mobile Second Edition 和 Windows Mobile 5.0 的 Pocket PC 和 Smartphone 设备的开发人员可以利用 Visual Studio。 Windows Mobile 5.0 将继续运行用 eMbedded Visual C++ 3.0 和 eMbedded Visual C++ 4.0 开发的应用程序。但是,使用这些工具的开发人员将无法直接面向 Windows Mobile 5.0 调试或部署他们的应用程序。只有 Visual Studio 支持直接面向 Windows Mobile 5.0 部署和调试应用程序。 集成式托管开发 对于使用托管代码的移动设备开发人员而言,Visual Studio2005 是取代 Visual Studio .NET2003 的首选工具。熟悉 Visual Studio .NET2003 的开发人员会发现 Visual Studio 提供了非常熟悉和一致的体验。 Visual Studio2005 为托管开发人员引入了 .NET Compact Framework2.0,并且提供了很多新的类和方法。它还包含很多针对运行库的增强功能(如改进的性能)以及对高级编程功能(如泛型和匿名函数)的支持。对于那些需要支持现有 .NET Compact Framework 1.0 应用程序或那些希望继续使用 .NET Compact Framework 1.0(由于它在 Windows Mobile 设备上的 ROM 中的广泛可用性)的开发人员,Visual Studio2005 继续支持 .NET Compact Framework 1.0,以便进行 Pocket PC 和 Smartphone 开发。 无论是开发 .NET Compact Framework 1.0 还是 2.0 应用程序,托管开发人员都可以充分利用 Visual Studio2005 的强大设备开发环境。.NET Compact Framework 1.0 和 2.0 都具有对上文描述的 Windows Mobile 5.0 托管 API 的完整访问权限。这些托管 API 是作为 Windows Mobile 5.0 操作系统的一部分予以合并的,并且不与任何版本的 .NET Compact Framework 相联系。 注有关 Visual Studio 中提供的新设备开发功能的详细信息,请参阅下一部分 — Visual Studio 设备开发。 Windows Mobile 5.0 将继续运行用 Visual Studio 开发的应用程序。但是,那些希望直接针对 Windows Mobile 5.0 调试或部署应用程序的开发人员必须使用 Visual Studio2005。只有 Visual Studio2005 支持直接针对 Windows Mobile 5.0 进行部署或调试。 Visual Studio 设备开发 Visual Studio 为那些以前使用过 eMbedded Visual C++ 或 Visual Studio .NET 的开发人员提供了一个一致、熟悉的开发环境。对 Visual Studio2005 开发环境的熟悉使开发人员可以立即应用他们现有的 eMbedded Visual C++ 或 Visual Studio .NET 技能来高效地工作,以便生成高质量的设备应用程序。 Visual Studio 还包含很多旨在改善开发人员工作效率和开发人员总体体验的增强功能。总之,Visual Studio2005 提取了 eMbedded Visual C++ 和 Visual Studio .NET 的最佳功能,并且将它们包装到单个软件包中。 适合于设备开发人员的新功能 除了将 eMbedded Visual C++ 和 Visual Studio .NET2003 中的很多熟悉的功能组合在一起以外,Visual Studio2005 还引入了很多新功能。这些新功能建立在最初由 eMbedded Visual C++ 和 Visual Studio .NET 提供的丰富开发环境之上,以便产生更加高效和多产的开发人员体验。本节概述这些新功能。 改进的用户界面设计器 不久以前,所有 Pocket PC 设备都具有相同大小的屏幕,并且所有 Smartphone 设备也都具有相同大小的屏幕。在这两种情况下,所有设备都总是显示为纵向模式。随着 Windows Mobile Second Edition 和 Windows Mobile 5.0 的先后引入,不同的设备开始支持不同的屏幕分辨率。例如,Pocket PC 现在支持的屏幕分辨率有 240 x 320、240 x 240、480 x 640 和 480 x 480。此外,设备还支持纵向、横向或方形显示,并且某些设备支持在纵向和横向布局之间动态更改的显示。为了简化设计面向这些更加丰富的显示选项的应用程序的过程,Visual Studio2005 已经向 UI 设计器中添加了多种新功能。 可以将 Visual Studio2005 托管 UI 设计器描述为“所见即所得”(WYSIWYG),它支持交互式设计体验,使开发人员可以在任何可用的 Windows Mobile 显示大小和方向下查看他们的应用程序窗体。图 4 显示一个 UI 设计器,它将窗体显示为纵向,并且显示 Rotate Right 菜单选项 — 该选项用于将 UI 显示旋转到横向。图 5 显示在用户已经选择 Rotate Right 以后,该 UI 设计器中的同一窗体。 图 4. Visual Studio2005 托管 UI 设计器(纵向)。 图 5. 旋转到横向的 Visual Studio2005 托管 UI 设计器。 为了简化能够支持多种屏幕分辨率的应用程序的开发过程,所有托管控件现在都具有更高的屏幕敏感性,并且支持锚定和停靠。锚定用于指定控件与窗体边缘保持固定的距离。当窗体大小和方向更改时,控件调整它的位置以便与窗体的边缘保持相同距离。开发人员可以将控件锚定到一个或多个边缘。 停靠控件可指定该控件直接针对该窗体的边缘确定自身的位置,并且该控件占据整个边缘。开发人员可以针对同一个边缘停靠多个控件,以便产生层叠效果。当用户旋转屏幕时,停靠的控件会自动调整以便始终占据指定的边缘。在图 5 中,当 UI 横向显示时,窗体底部的列表框被部分遮掩。停靠和锚定可以轻松地矫正这一问题。图 6 和 7 分别纵向和横向显示同一窗体。文本框和标签锚定到窗体的左上角,列表框停靠到窗体的下边缘。 图 6. 纵向显示的窗体 — 控件利用了停靠和锚定。 图 7. 横向显示的窗体(窗体和图 6 中的相同)。 对于面向 Pocket PC 和 Smartphone 的托管应用程序,Visual Studio2005 UI 设计器现在具有设备敏感性,并且完全了解这两种设备之间的屏幕和控件功能方面的差异。设计器工具箱会自动调整,以便只有适用于当前所选设备的控件可用。Visual Studio2005 甚至更进一步。开发人员完全可以将原来为 Pocket PC 设计的窗体从 Pocket PC 设计器拖到 Smartphone 设计器中,Visual Studio2005 会自动为 Smartphone 更新该窗体。Visual Studio2005 将调整控件大小,并且为不受 SmartPhone 支持的窗体控件提供适当的替代控件。 模拟器
图 8. Windows Mobile 5.0 Pocket PC 模拟器。 图 9. Windows Mobile 5.0 Smartphone 模拟器。 一种真正的 ARM 模拟器 Visual Studio 引入了一种真正的 ARM 模拟器。作为真正的 ARM 模拟器,它提供了更多精确且完整的应用程序测试功能,从而提供了以前从未达到过的设备-模拟器一致性级别。ARM 模拟器运行相同的计算机指令,具有相同的内存布局,甚至使用与 ARM 设备相同的驱动程序。所有设备开发人员都会发现这些功能很重要,但 ARM 模拟器对于本机开发人员具有额外的好处,因为它使用与设备相同的二进制文件。不再需要为模拟器编译一组二进制文件,而为设备编译另一组二进制文件。通过在模拟器和设备上使用相同的二进制文件,开发人员可以减少开发时间并提供更精确的测试。 ActiveSync 支持
共享文件夹支持
丰富的显示和更多的串行端口
Device Emulator Manager
图 10. Device Emulator Manager 数据设计器 随着设备应用程序变得越来越复杂,它们的数据管理需要的复杂性也在日益增加。为了简化移动设备数据库的设计和维护,Visual Studio2005 提供了新的数据设计器。这些设计器为设备数据库提供了完整的生命周期管理,包括架构设计、表约束管理和数据填充。开发人员现在可以从他们的桌面计算机中执行所有数据库管理。 图 11 说明了如何使用 Create Table 数据设计器来创建新的数据库表。通过使用该设计器,可以添加列,包括设置它们的类型、数值范围、精度和 null 支持。您可以创建特殊值列(如 identity 和 rowguid 列),并且可以定义构成该表的主键的列。还有类似的用于修改架构、创建索引和填充数据库的设计器。通过使用如图 12 所示的数据库图表工具,您可以定义数据库关系和约束。您还可以使用设计器创建强类型的 DataSet。 图 11. 使用“Create Table”数据设计器向设备数据库中添加表。 图 12. 使用数据库图表工具定义表关系。 数据设计器提供了创建和管理数据库所需的所有工具。除了已经讨论的功能以外,您还可以使用设计器完成一些基本的管理任务,如压缩数据库或加密数据库内容。数据设计器的另一个重要功能是它们的连接性支持。无论数据库是位于桌面计算机中、包含在模拟器中还是位于实际设备中,数据设计器都可以同样出色地工作。无论您是要在桌面计算机上创建新的数据库并将其作为部署的一部分部署到数百个设备,还是要管理单个设备中包含的数据库的内容,该连接性支持都使您可以同样高效地工作。 数据设计器除了对在桌面计算机文件系统中以及直接在设备中管理数据库提供支持以外,还通过基于服务器的数据管理工具提供了一致的体验。已经使用过 SQL Server Enterprise Manager 或 Visual Studio .NET Server 工具的开发人员将发现数据设计器非常熟悉。开发人员现在可以跨所有数据库利用单个技能集,而无需考虑物理位置。 多平台开发 Visual Studio 的针对多平台项目的支持使面向多个设备平台变得空前容易。本机和托管项目现在都可以面向 Pocket PC 和 Smartphone 设备。这些项目使开发人员可以在保持不同的用户界面的同时,对这两种设备使用相同的代码。这些项目还可以跨越多个 Windows Mobile 版本。对于本机开发人员,Visual Studio2005 支持面向多个 CPU 类型。 改进的调试器 应用程序调试是开发体验的核心。对于 Visual Studio2005,设备调试器已经完全重构,以便在提供无与伦比的性能的同时,向设备开发人员提供最完整的可用调试功能集。 改进的调试器性能 开发人员需要花费大量时间来使用调试器,这一点毫无意外。可以将开发人员的总体工作效率的大部分直接与调试器的性能联系起来。这也就是完全重构 Visual Studio2005 调试器以提供比以往任何时候都更好的性能的原因。 调试器的整个控制和通信模型已经进行了修改,以便更为高效地在设备和桌面计算机之间分配工作负荷,以减少基于 CPU 的性能瓶颈。新的调试器通过大大减少桌面计算机和设备之间的通信量,进一步提高了性能。因为大多数开发人员使用 USB 2.0 连接进行调试,所以调试器也已经针对 USB 2.0 连接进行了优化。 进程附加 通过 Visual Studio2005,设备开发人员现在可以附加到和调试正在运行的进程。借助于这一功能,设备开发人员不再受到只能调试该调试器启动的应用程序的限制。开发人员现在可以调试可能由用户、系统或另一个进程启动的进程。该功能还通过标识在该调试器未启动的应用程序中发生的问题,改进了开发人员工作效率。现在,开发人员在识别问题时,可以在应用程序的当前状态下调试这些应用程序,而不必用调试器重新启动相应的应用程序,然后试图再现识别出的问题。 多进程调试 设备开发人员现在可以同时调试多个应用程序。随着多进程调试支持的引入,设备开发人员可以同时调试互相合作或依赖的设备应用程序,而无论这些应用程序是在同一设备上运行,还是在不同设备上运行。当开发人员调试正在模拟器上运行的应用程序时,该功能可以同样出色地工作。 对组合式本机和托管解决方案的支持 本机和托管代码都提供了很多独特的好处。当生成复杂的设备应用程序时,开发人员将本机和托管代码组合起来以利用二者的长处,这是一种常见的做法。对于 Visual Studio,开发人员可以创建同时包含本机和托管项目的单个解决方案。该支持显著简化了管理和测试应用程序组件的任务,因为开发人员可以将应用程序的所有部分作为单个单元进行管理。 添加了 CAB Designer Project 类型 对于应用程序的成功而言,正确的部署与合理的设计和编程同样重要。为了减少开发人员用来创建设备 CAB 安装文件的时间和精力,Visual Studio2005 引入了 CAB Designer Project。如图 13 所示,CAB Designer Project 使开发人员可以用图形方式设计 CAB 文件。借助于这一图形模型,开发人员只需要将部署文件与特定的文件夹相关联,并且进行任何必要的注册表修改 — 让 Visual Studio2005 完成实际构建 CAB 文件的工作。对于需要代码签名的应用程序,应用 Authenticode Signature 就像设置单个项目属性一样简单。 图 13. Visual Studio2005 CAB Designer Project。 改进的智能感知 很久以来,智能感知一直是 Visual Studio 家族中最有效的工作效率工具之一,它显著减少了键入工作,为开发人员消除了查找方法参数列表的需要。在这些优势的基础之上,Visual Studio2005 通过使智能感知对上下文更加敏感,并且仅显示所面向的平台类型和成员,使其更进一步。 当特定平台不能支持所有可用控件时,该功能非常有用。例如,在面向 Smartphone 的项目中,只有那些对 Smartphone 有效的控件出现在智能感知中;然而,在面向 Pocket PC 的项目中使用相同的库时,智能感知会自动包括其他受支持的控件。 Windows Mobile 5.0 SDK Windows Mobile 5.0 SDK 可免费下载,它将 Windows Mobile 5.0 开发人员工具集成到 Visual Studio 中。Windows Mobile 5.0 SDK 提供了必要的模拟器、帮助文件、头文件和库,以使那些将应用程序面向 Windows Mobile 5.0 的开发人员可以利用该平台。表 11 总结了安装 Windows Mobile 5.0 SDK 的好处。
迁移到 Visual Studio2005 Windows Mobile 5.0 不需要开发人员将用 eMbedded Visual C++ 3.0、eMbedded Visual C++ 4.0 或 Visual Studio .NET 创建的现有应用程序升级到 Visual Studio。用上述工具生成的应用程序可以继续在 Windows Mobile 5.0 上运行。Windows Mobile 5.0 将这些应用程序视为“旧式”应用程序。如果没有明确指定这些应用程序具有分辨率敏感性,则它们会受到在本文的“分辨率和方向敏感性”部分中讨论的对应用程序显示进行的运行时修改的影响。这些现有的应用程序可能还具有需要开发人员给以特别关注的库或 API 依赖项,并且在部署到 Windows Mobile 5.0 设备时可能要满足严格的安全需求。 注Windows Mobile 5.0 包含对以前的 Windows Mobile 平台的重要更改,其中包括对已安装的库和安全模型的更改。建议正在考虑将现有应用程序部署或迁移到 Windows Mobile 5.0 的开发人员阅读 Windows Mobile Platform Migration FAQ for Developers。 尽管用 eMbedded Visual C++ 3.0、eMbedded Visual C++ 4.0 和 Visual Studio .NET 创建的应用程序可以继续在 Windows Mobile 5.0 设备上运行,但只有 Visual Studio2005 可以直接面向 Windows Mobile 5.0 设备或模拟器调试和部署应用程序。 将 Embedded Visual C/C++ 项目迁移到 Visual Studio Visual Studio 提供了一整套设备开发工具,以便改进由 eMbedded Visual C++ 3.0 和 4.0 提供的编译器和库。这些更改以及 eMbedded Visual C++ 和 Visual Studio2005 项目文件之间的差异要求对迁移到 Visual Studio2005 的现有 eMbedded Visual C++ 项目进行多处修改。 这些修改包括在 Visual Studio2005 中创建新的项目文件(可能基于 eMbedded Visual C++ 项目文件)以及将项目头文件和源文件添加到新的项目中。在完成这一工作之后,编译器和库中的差异可能要求对项目属性进行更改,而且在某些情况下,开发人员可能需要更改源代码本身。在很多情况下,源代码更改是新编译器提供的改进的 C++ 标准一致性的结果。 为了简化迁移,Visual Studio2005 提供了升级向导。开发人员可以使用该向导将单个项目或整个 eMbedded Visual C++ 工作区转换为 Visual Studio2005 解决方案。该向导是自动启动的,方法是使用 Visual Studio2005 的标准打开项目功能打开原始 eMbedded Visual 项目或工作区。 使用 Visual Studio2005 打开项目功能
注Visual Studio2005 就地执行项目升级,并且将原始头文件和源文件添加到新的项目中。强烈建议您在启动升级过程以前,生成 eMbedded Visual C++ 项目或工作区(包括所有相关文件)的备份。 升级向导执行下列任务:
升级向导旨在升级项目和工作区 — 该升级向导不会对源代码进行任何更改。在升级向导完成以后,下一步是编译代码并纠正任何编译问题。 注Migrating Microsoft eMbedded Visual C++ Projects to Visual Studio 2 中提供了迁移过程的详细说明以及常见迁移问题的列表。强烈建议开发人员在首次执行从 eMbedded Visual C++ 到 Visual Studio2005 的升级时参阅该文档。 将 Visual Studio2003 项目迁移到 Visual Studio2005 将项目或解决方案从 Visual Studio .NET2003 迁移到 Visual Studio2005 的托管开发人员应该发现该过程相当顺利。Visual Studio2005 提供了升级向导,以便自动将项目设置转换为 Visual Studio2005 中的等效值。它还自动将项目源文件添加到刚刚创建的项目中。该升级向导不会对源代码文件进行任何更改。强烈建议开发人员在执行升级之前备份整个项目或解决方案,包括所包含的所有文件。 强烈建议那些要将 Visual Studio .NET2003 项目迁移到 Visual Studio2005 的开发人员以及那些打算面向 Windows Mobile 5.0 的开发人员阅读 Windows Mobile Platform Migration FAQ for Developers,因为某些平台更改可能影响应用程序在 Windows Mobile 5.0 设备上进行安装和运行的能力。 远程工具 为了高效地开发设备应用程序,开发人员需要经常与目标设备交互。开发人员在开发应用程序的过程中执行的很多常见任务(如查看文件系统或修改注册表)可能难以直接在设备上执行。为了简化这些任务以及其他设备管理和监视任务,Visual Studio2005 提供了远程工具。 Visual Studio 远程工具是一组桌面计算机实用工具,它们提供了常见的设备监视和管理功能。表12 显示 Visual Studio2005 远程工具。通过使用这些工具,开发人员在监视和管理设备或模拟器时可以获得能够与他们的桌面计算机交互相媲美的简单性和效率。这些工具与 eMbedded Visual C++ 中随附的远程工具非常类似。但是,Visual Studio 是第一个同时向本机和托管开发人员提供这些实用工具的程序。
图 14. Visual Studio2005 Remote File Viewer 图 15. Visual Studio2005 Remote Process Viewer。 本机编译器和库 Visual Studio 为本机开发人员提供了很多重要的增强功能。这些增强功能包括编译器、标准 C 库、MFC 和 ATL。除了提供改进的应用程序质量以外,这些增强的版本与它们的桌面计算机对应组件具有更多的可比性 — 它们进一步提高了开发人员在桌面计算机和设备应用程序开发之间共享代码和技能的能力。 编译器 Visual Studio 向本机设备开发人员提供了一整套支持 ARM、MIPS、SH 和 x86 平台的新的设备交叉编译器。这些编译器已经完全用新的编译器前端(它基于最新的桌面计算机编译器)进行了重构。 常见的前端体系结构在桌面计算机和设备之间提供了更大的编译器行为一致性,从而使开发人员可以更为容易地迁移应用程序代码和他们的技能。转而进行设备开发的开发人员还可以保护现有的代码投资,并且最大限度地缓和他们的学习曲线。因为新的编译器前端是基于桌面计算机编译器的,所以很多桌面计算机编译器功能现在被合并到了设备编译器中。 由于合并了桌面计算机编译器功能,因此设备编译器能够提供很多以前无法得到的优化改进。除了编译器优化以外,设备开发人员现在还获得了链接时代码生成的好处。链接时代码生成为应用程序提供了进行比仅仅执行编译器优化更大的优化的机会,因为该优化可以跨编译模块(*.bin 文件)执行,从而有机会将程序作为一个整体进行优化。 编译器改进并不限于代码优化。因为设备编译器利用了桌面计算机编译器,所以它现在能够合并很多以前仅限于桌面计算机的功能。例如,设备编译器现在提供了更高级别的 C/C++ 标准一致性。同样,设备编译器现在能够提供显著增强的 Unicode 支持。 库 除了提供更新的编译器以外,Visual Studio2005 还提供了本机库的更新版本,包括标准 C++ 库 8.0 (SCL)、标准模板库 8.0 (STL)、Microsoft 基础类 8.0 (MFC) 和活动模板库 8.0 (ATL)。像编译器一样,上述所有库都已经进行了更新,并且现在基于它们的桌面计算机对应组件。尽管基于相应的桌面计算机库,但每个设备实现都是桌面计算机实现的子集。该子集基于大小方面的考虑、性能方面的考虑、基础操作系统功能的可用性和平台适应性。 使新的本机库基于它们的桌面计算机对应物,为设备开发人员提供了很多好处。最明显的好处是应用程序代码现在具有更高的可移植性,因为库本身的桌面计算机和设备版本具有更高的兼容性。这种可移植性也适用于开发人员的技能。过去,一些桌面计算机库比相应的设备实现更加稳定。更新的库现在为设备开发人员提供了最高质量的可用实现。 对于使用 MFC 或 ATL 的开发人员,需要记住的是,Windows Mobile 5.0 设备随附了安装在 ROM 中的 MFC 3.0 和 ATL 4.0。使用新的更新库 MFC 8.0 和 ATL 8.0 的开发人员必须确保将版本 8.0 库静态链接到他们的应用程序中,或者在他们应用程序的安装中包含版本 8.0 DLL。 注有关使用 Visual Studio 进行本机应用程序开发的详细信息,请参阅 What's New in Visual Studio 2005 for Native Developers。 其他影响开发人员的 Windows Mobile 5.0 更改除了已经讨论的工具和 API 以外,Windows Mobile 5.0 还提供了很多改进。下表概述了一些附加的 Windows Mobile 5.0 功能。 ROM 中提供的软件 表 13 显示在所有 Windows Mobile 5.0 设备的 ROM 中提供的一些关键的开发人员库、控件和运行库。应用程序需要的以及该表中未列出的任何库、控件或运行库都必须显式安装到目标设备上。请注意,Windows Mobile 5.0 的 ROM 中未提供 .NET Compact Framework 2.0、SQL Mobile2005、MFC 8.0 和 ATL 8.0,因此您必须安装它们(或者,对于 MFC 8.0 和 ATL 8.0,可以将它们静态链接到您的程序中)。
分辨率和方向敏感性 Windows Mobile 5.0 设备支持多种屏幕大小和方向(包括纵向、横向和方形)。所有面向 Windows Mobile 5.0 的应用程序都标记为具有屏幕分辨率和方向敏感性;因此,开发人员所面临的一个非常重要的问题是,设计和验证应用程序以便在各种屏幕分辨率和方向下有效地工作。除了验证对不同分辨率和方向的支持以外,开发人员还应该使应用程序做好设备方向在应用程序生存期中的任何时间更改的准备,因为很多 Windows Mobile 5.0 设备支持在纵向和横向之间动态更改。 对于托管开发人员,为处理不同屏幕分辨率和方向而进行准备的最佳方式通常是利用托管控件的 Dock 和 Anchor 属性。托管应用程序自动调整每个应用程序窗体的大小,以匹配当前设备的屏幕布局。当用户在应用程序运行过程中更改设备的屏幕方向时,所有应用程序窗体都将自动重定向,以匹配新的屏幕布局。通过使用 Dock 和 Anchor 属性,在发生任何窗体布局更改时,所有窗体控件都将自动重定位。 对于本机开发人员,Visual Studio2005 在 DeviceResolutionAware.h 中提供了很多 Helper 函数,以简化使应用程序具有分辨率和方向敏感性的过程。通过使用所提供的 Helper 函数,开发人员可以设计应用程序以询问当前方向,缩放图形资源,以及用更加适合当前屏幕布局的资源修改当前对话框布局。表 14 列出其中一些函数。
无论开发人员是使用托管开发工具还是本机开发工具,开发人员都应该使所有面向 Windows Mobile 5.0 的应用程序做好适应所有受支持的屏幕大小和方向的准备。通过使用 Windows Mobile 5.0 SDK 随附的模拟器,开发人员可以轻松地验证应用程序外观和行为,因为所提供的模拟器代表了所有可能的 Windows Mobile 5.0 屏幕布局。 Windows Mobile 5.0 将继续运行现有的可能不具有屏幕敏感性的应用程序。当应用程序面向的分辨率低于设备支持的分辨率时,Windows Mobile 5.0 将自动执行像素加倍处理,缩放应用程序以使其与设备显示匹配。如果设备方向导致应用程序显示的某些部分被切掉,则 Windows Mobile 5.0 会自动添加滚动条,以使用户可以滚动和查看屏幕的其余部分。 Pocket PC 软键 Windows Mobile 5.0 为 Pocket PC 引入了软键。如图 16 所示,软键是应用程序可以修改的键,它们出现在屏幕的底部,并且与屏幕正下方的硬键相联系。软键自 Smartphone 最初发布以来就已经存在了,并且已经成为有价值的用户工作效率工具。在 Pocket PC 上,软键可以避免使用笔针的需要,因为它们使用户能够通过只使用一只手来与应用程序交互。 图 16. Windows Mobile 5.0 Pocket PC 软键。 向应用程序中添加智能键就像设计菜单一样简单。在设计应用程序时,请简单地创建一个只带两个选项的菜单。当该应用程序执行时,Windows Mobile 5.0 会将每个菜单选项映射到某个软键。Windows Mobile 5.0 自动为任何包含带有一个或两个选项的菜单的应用程序提供该行为。包含两个以上选项的菜单呈现为传统的菜单。 持久存储区 Windows Mobile 5.0 能够防止所有数据和应用程序遭受与电源有关的损失。因为 Windows Mobile 5.0 将整个文件系统和注册表装入到持久存储区中(而不是使用 RAM),所以,Windows Mobile 5.0 设备就为用户和应用程序都提供了可靠的存储平台 — 即使是在缺少电池电源的情况下。 持久存储区为应用程序开发人员提供了可靠的存储系统,该系统完全是通过标准文件系统和注册表 API 实现的。持久存储区针对大型读写操作进行了优化;因此,大块读写数据的应用程序的性能往往要超过那些读写小块数据的应用程序。 EDB 为了改善应用程序的性能和长期可移植性,CEDB 对象存储区已经被 EDB 所取代。EDB 利用了 SQL Mobile 使用的存储子系统,并且提供了明显优于 CEDB 的性能(尤其是在与持久存储区一起使用时)。将应用程序从 CEDB 移植到 EDB 的影响最小,因为 CEDB 提供了与 CEDB 完全相同的函数集 — 所有函数都具有相同的名称和参数列表。 Pocket PC 应用程序安全 为了帮助用户和企业保护其 Pocket PC 设备的完整性,Windows Mobile 5.0 将 Smartphone 所使用的基于证书的应用程序安全模型引入到 Pocket PC 中。通过该应用程序安全模型,Windows Mobile 5.0 设备依靠数字代码签名来验证用户安装到设备中的任何应用程序确实来自它所声称的来源,并且在用户将其安装到设备中以前,没有人修改过该应用程序。 默认情况下,当在 Windows Mobile 5.0 Pocket PC 上启动新的应用程序安装时,在执行实际安装以前,设备会检查该应用程序是否已经用来自受信源的证书进行了数字签名。如果该设备确定该应用程序来自受信源,则它会安装该应用程序。如果该应用程序未签名或未用来自已知受信源的证书签名,则设备会提示用户确认是否应该继续执行该安装。该模型使用户能够完全控制将哪些应用程序安装到他们的设备上。 对于希望严格控制安装在企业设备中的应用程序的企业,它们可以修改该默认模型。在该方案中,企业可以移除默认的受信源列表,并且可以安装它们自己的列表。此外,企业可以禁用在应用程序未签名或来自未知源时提示用户的选项。在企业禁用该选项以后,用户只能安装由该企业认为是受信源之一签名的应用程序。该模型显著提高了企业设备的稳定性和可靠性,这是因为它消除了由用户安装个人软件引起的相关问题和支持问题。 Pocket PC 和 Smartphone 共享公共 CAB 格式 用于 Pocket PC 和 Smartphone 的 Windows Mobile 5.0 软件共享一种公共的 CAB 格式。共享一种公共的 CAB 文件格式可以显著减少创建 CAB 文件和支持安装过程所需的时间,因为所有设备安装都是通过单个 CAB 处理的。 ActiveSync 任何移动设备应用程序中的关键考虑事项之一是,如何将该设备中的数据与桌面计算机或后端服务器中的数据进行同步。对于许多应用程序而言,答案是 ActiveSync,因为它为 Windows Mobile 设备提供了端对端数据同步解决方案。对于 Windows Mobile 5.0,ActiveSync 合并了很多增强功能,以便提供更高质量的、更可靠的同步体验。 改进的 USB 2.0 支持 尽管 ActiveSync 提供了很多连接选项(包括蓝牙、红外线和串行端口),但开发人员最经常使用的是 USB 2.0。为了在开发人员通过 USB 2.0 连接进行连接时改进 ActiveSync 体验,ActiveSync USB 驱动程序已经完全进行了重构。这些新的驱动程序现在充分利用了 USB 2.0 硬件的功能和性能。此外,这些新的驱动程序现在可以更加有效地与桌面计算机网络服务协作。这些新的驱动程序加之它们与桌面网络服务之间的更好合作,一起显著提高了同步吞吐量。 改进的多重合作关系管理 ActiveSync 除了现有的对与多个桌面计算机保持合作关系的设备的支持以外,还改进了它对合作关系管理的处理。现在,ActiveSync 支持与桌面计算机和服务器同时保持合作关系。ActiveSync 还具有重新构建的用于检测合作关系之间的冲突的逻辑。这一新逻辑在检测冲突方面更为有效,从而显著减少了在合作关系之间出现重复信息的情况。 改进的 Exchange 同步 更新 ActiveSync 的关键焦点之一是,改进用户在将设备与 Exchange 进行同步时的总体体验。这些更新已经导致了多个关键性的变化。最显著的变化之一是在与 Exchange 同步时的连接可靠性方面的改进。这一改进不仅产生了更为成功的初始连接,而且减少了丢弃的或不完整的连接数量。这些更改还改进了在直接与 Exchange 服务器进行同步和通过桌面计算机连接与 Exchange 同步之间的同步连续性。这些同步方式现在提供了完全相同的同步行为和结果。 ActiveSync 现在提供了更为完整的 Exchange 同步体验。ActiveSync 除了长久以来支持约会、联系人和日历的同步以外,它现在还支持同步任务。作为提供更为完整的体验的一部分,ActiveSync 现在还能够同步其他 Outlook 属性。其中最值得注意的是,它现在能够同步作为联系人的一部分而包含的图片。 改进的安全 除了对功能进行增强,ActiveSync 还包含很多安全增强功能。这些增强功能是严格的安全审查的结果,旨在更好地保护您、您的设备、数据和桌面计算机。一项关键性的安全更改是移除远程同步。在以前的版本中,远程同步使设备可以通过使用 WiFi 连接进行同步。在经过审查之后,该功能被认为没有提供足够的安全,并且已经被移除。 RAPI Windows Mobile 远程 API (RAPI) 是一系列用于从桌面计算机中管理和控制所连接的设备以及与其进行交互的函数。除了支持长期存在的 C 样式 RAPI 以外,Windows Mobile 5.0 还提供了新的基于 COM 的实现。新的基于 COM 的 RAPI 提供从现有 C 样式实现进行的关键性体系结构转换。与假设恰好有一个 Windows Mobile 设备连接到桌面计算机的 C 样式 RAPI 不同,基于 COM 的 RAPI 被设计为支持多个同时连接到桌面计算机的设备并且与它们进行交互。 需要说明的是,Windows Mobile 5.0 仍然只支持将单个设备连接到桌面计算机 — 它不支持多个同时连接的设备。但是,将来的 Windows Mobile 实现可能支持将多个 Windows Mobile 设备同时连接到单个桌面计算机这一功能。 尽管编写为使用新的基于 COM 的 RAPI 的应用程序将被限制为与单个已连接的 Windows Mobile 5.0 设备进行交互,但这些应用程序已经做好了在对相应功能的支持添加到将来的 Windows Mobile 设备中以后,与多个已连接的设备进行交互的准备。建议所有刚刚创建的面向 Windows Mobile 5.0 的 RAPI 应用程序都使用基于 COM 的 RAPI。表 15 显示三个主要的 RAPI COM 接口。
Windows Media Player Windows Media Player 为用户提供丰富的多媒体体验,它同时为音频和视频播放提供了高质量的支持。Windows Mobile 5.0 通过将 Windows Media Player 公开为 OCX,向那些希望将多媒体播放功能合并到其应用程序中的应用程序开发人员提供了这些功能。使用 Windows Media OCX,开发人员可以管理播放列表、枚举内容、流式传输内容、控制播放质量,等等。图 17 显示 Windows Media Player Library 和 Music Playback 屏幕。 图 17. Windows Media Player 10 Library 和 Music Playback 屏幕。 小结Windows Mobile 5.0 使开发人员能够轻松地利用现代移动设备的强大功能。强大的本机和托管 API 一起为开发人员提供了易于使用的高效开发平台。类和库与它们的桌面计算机对应组件之间的高度连续性以及 Visual Studio2005 所提供的统一开发环境一起,共同提高了开发人员的工作效率,并且使开发人员能够更有效地利用他们的技能和代码投资。 Windows Mobile 5.0 是最强大的可用移动设备平台。在使开发人员能够继续致力于完善和最大限度地利用他们的核心技能集的同时,Windows Mobile 5.0 和 Visual Studio2005 共同使开发人员能够创建更加强大且更易使用的应用程序。 |