财讯中国

Windows Mobile 5中的新特性

来源:网络 2022-01-20 12:00:20

微软最近推出下一代移动设备操作系统Windows Mobile 5。Windows Mobile 5在用户体验方面做了很多改善,但更多的改进还是在应用程序编程接口方面。在这篇文章中,我们会向您介绍Windows Mobile 5在开发方面的一些新特性,其中包括3D图形编程、新控件、新的API函数等。

开发工具

Windows Mobile 5的开发工具是Visual Studio 2005。如果要开发Windows Mobile 5的应用程序,还需要装Windows Mobile 5的SDK和ActiveSync 4.0。

我们要在Windows Mobile 5设备上开发出托管应用程序就需要借助.NET Compact Framework 2.0的强大功能。.NET Compact Framework 2.0在1.0的基础上做了较大的改进,为我们提供了更多的用户控件,比如DateTimePicker、OpenFileDialog、WebBrowser、LinkLabel和Notification等控件。这些控件都是在.NET CF 1.0中所没有提供的,但是因为他们在实际开发过程中会经常用到,到了.NET CF 2.0中,这些功能终于被加了进来。

在数据访问方面,.NET CF 2.0支持SQL Mobile 2005的访问支持。SQL Mobile 2005的功能增强了很多,支持多用户同时访问数据库,也支持在PC上创建SQL Mobile数据库。Windows Mobile 5的Smartphone版本也支持SQL Mobile数据库了。在XML支持方面,.NET CF 2.0支持XML的Schema、Serialization、XPath等。

在远程访问方面,.NET CF 2.0支持MSMQ和.NET Remoting,而在对Socket支持方面,IPv6已经得到了很好的支持。

.NET CF 2.0还有一个重要的特性:支持COM互操作性。我们可以在.NET程序中可以访问COM组件,也可以将Callback函数传递给COM组件。但是我们不能调用ActiveX控件。

在C++移动设备程序开发方面,Visual Studio 2005支持MFC 8.0、ATL 8.0和标准C++库8.0。我们也可以在Windows Mobile 2003设备上支持.NET CF 2.0,但必须要将.NET CF 2.0的运行库安装到设备上。

用户界面

Windows Mobile 5的Pocket PC用户界面发生了很大改变。为了和Smartphone界面类似,Pocket PC的程序菜单被改成了左右两个,在实际设备上也添加了两个硬件按键和这两个菜单相对应。这样的变化可以让用户方便地通过硬件按键操作应用程序,而这样的修改也便于应用程序在Pocket PC和Smartphone之间的移植。为了保持兼容性,Pocket PC仍然支持多于两个一级菜单的菜单结构,但是新开发的程序建议还是采用新的菜单结构。

Windows Mobile 5的应用程序很方便地支持Notification通知机制。当应用程序发生改变的时候,我们可以通过Notification方式来通知用户。

下面我们就来通过一个示例,来了解一下.NET CF应用中如何使用Notification控件。我们首先来创建一个Windows Mobile 5的应用程序。打开Visual Studio 2005,选择File-New-Project,我们选择Visual C#中的Pocket PC Magneto,来创建一个Windows Mobile 5 Pocket PC应用程序。需要提醒的是在创建项目前,必须安装好Windows Mobile 5的SDK。

在创建好项目后,我们在界面编辑器中,为窗体添加MainMenu和Notification两个控件。我们在MainMenu的一个子菜单的响应函数中添加下面的代码:

private void menuItem5_Click(object sender, EventArgs e)

{

StringBuilder HTMLString = new StringBuilder();

HTMLString.Append();

HTMLString.Append(Submit data?);

HTMLString.Append(

);

HTMLString.Append();

HTMLString.Append();

HTMLString.Append();

//Set the Text property to the HTML string.

notification1.Text = HTMLString.ToString();

notification1.Caption = Notification Demo;

notification1.Critical = false;

// Display icon up to 10 seconds.

notification1.InitialDuration = 10;

notification1.Visible = true;

}

Notification控件支持HTML格式的文本,所以我们的示例创建了两个Input控件。然后设置Notification控件的Visible属性为true就可以了。

编译执行后的效果如上图所示。我们可以看到,Notification已经从Windows Mobile 2003的气泡型窗体变成了从下边出现的形式。输入法图标也从右下角移到了中间。

Microsoft.WindowsMobile.Forms

Windows Mobile 5为开发者提供了Microsoft.WindowsMobile.Forms类库,该类库为用户提供了调用各种系统功能的对话框。目前该类库为我们提供了三种自定义对话框,分别是提供照相机功能的CameraCaptureDialog、提供选择联系人的ChooseContactDialog和提供选择图片的SelectPictureDialog。

我们用一个示例来演示Microsoft.WindowsMobile.Forms类库的功能。首先来创建一个Windows Mobile 5的应用程序,平台类型可以是Pocket PC或Smartphone。为了使用Microsoft.WindowsMobile.Forms类库,我们需要首先添加引用。我们在解决方案资源管理器里右击项目名称,在右键菜单中选择添加引用。我们在添加引用对话框中,我们选择“Microsoft.WindowsMobile.Forms”。

我们在菜单的响应函数中添加ChooseContactDialog的使用。

private void menuItem1_Click(object sender, EventArgs e)

{

ChooseContactDialog contactPicker = new ChooseContactDialog();

contactPicker.Title = Choose a Contact below:;

contactPicker.ChooseContactOnly = true;

contactPicker.ShowDialog();

}

其实我们看到ChooseContactDialog的方法十分简单,只需要设置Title后,调用ShowDialog方法就可以显示出下边的对话框。

下边我们来添加对SelectPictureDialog的引用。

SelectPictureDialog pickerDialog = new SelectPictureDialog();

pickerDialog.Filter = Image Files(*.BMP;*.JPG)|*.BMP;*.JPG;

pickerDialog.InitialDirectory = @\My Device\My Images;

pickerDialog.Title = Select an image file;

pickerDialog.ShowDialog();

我们首先来设置SelectPictureDialog的过滤器,允许显示JPG和BMP的图片;然后设置初始文件夹;最后调用ShowDialog方法。

下边是SelectPictureDialog显示的效果。

电话、短信和电子邮件

在Windows Mobile 2003中,如果要在.NET程序中拨打电话的话,就需要通过P/Invoke来调用API。到了Windows Mobile 5中,Microsoft.WindowsMobile.Telephony类库为我们提供了拨打电话的功能。

在使用这个功能之前,我们必须添加Microsoft.WindowsMobile.Telephony引用。调用电话功能的代码如下:

Phone phone = new Phone();

phone.Talk(1234567);

程序运行效果如下:

Phone类的方法只有一个Talk方法,所以也只能简单的进行电话拨打。我们如果想实现一些复杂的功能,比如监视拨入的电话等,还需要去调用TAPI来实现。

发送短信息和发送电子邮件都需要Microsoft.WindowsMobile.PocketOutlook类库的支持。PocketOutlook是一个很复杂的命名空间,包括对很多系统功能的支持,而支持发短信的类是SmsMessage。

public void SmsMessageSend()

{

SmsMessage smsMessage = new SmsMessage();

//Set the message body and recipient.

smsMessage.Body = Would you like to meet for lunch?;

smsMessage.To.Add(new Recipient(John Doe, 2065550199));

smsMessage.RequestDeliveryReport = true;

//Send the SMS message.

smsMessage.Send();

return;

}

我们可以看到SmsMessage的Body属性是SMS短信的内容,而To属性,则是收件人的姓名和电话号码,因为支持多个收件人,所以在添加收件人的时候需要调用To属性的Add方法。RequestDeliveryReport属性是一个Bool值,设置是否要求得到发送报告。最后调用SmsMessage的Send方法。

发送Email的代码与发送短信息的代码大致相似,但是需要使用的是EmailMessage类。

public void EmailSend()

{

EmailMessage message = new EmailMessage();

message.Subject = The picture you requested;

message.BodyText = Attached is the picture we discussed;

Recipient client = new Recipient(John,john@test.com);

message.To.Add(client);

Attachment image = new Attachment(\test.jpg);

message.Attachments.Add(image);

message.Send(ActiveSync);

}

EmailMessage的Subject属性是电子邮件的标题,BodyText属性是邮件正文。To属性中可以添加收件人的名称和地址。我们还可以在Attachments属性中添加附件。最后我们调用Send方法。

联系人、约会和任务

Windows Mobile中有三个很重要的程序:联系人、约会和任务。我们可以使用Microsoft.WindowsMobile.PocketOutlook类库,来调用系统中的联系人、约会和任务信息。我们可以通过自己的程序添加信息。

我们先来看一下Microsoft.WindowsMobile.PocketOutlook命名空间中很重要的一个类OutlookSession。该类的一个对象就表示了一个Pocket Outlook 对象模块,以前我们需要调用POOM实现的功能,现在可以通过PocketOutlook来实现。

属性说明
Appointments得到约会(Calendar)目录的信息。
Contacts得到联系人目录信息。
EmailAccounts得到Email帐号的集合。
SmsAccount得到SMS帐号的信息。
Tasks得到任务目录信息的集合。

在使用OutlookSession的时候要先创建一个OutlookSession的对象,然后创建相应的对象并添加到OutlookSession相应属性中去。我们来看下边的例子。

OutlookSession session = new OutlookSession();

// 添加约会

Appointment appointment = new Appointment();

appointment.Subject = test;

appointment.Body = testtest;

appointment.Start = DateTime.Now;

appointment.End = new DateTime(2005, 7, 17, 16, 25, 0);

session.Appointments.Items.Add(appointment);

// 添加联系人

Contact contact = new Contact();

contact.FirstName = John;

contact.LastName = Lee;

contact.CompanyName = Microsoft;

contact.Email1Address = John@test.com;

contact.MobileTelephoneNumber = 1234567;

contact.IM1Address = John@hotmail.com;

session.Contacts.Items.Add(contact);

// 添加任务

Task task = new Task();

task.Subject = task1;

task.Body = task1 body;

session.Tasks.Items.Add(task);

我们创建Appointment、Contact和Task对象,然后设置相应的属性,然后添加到OutlookSession对象的相应的属性中。

其他新特性

Windows Mobile 5除了支持上面的特性外,还支持一些其他的新特性。比如在图象显示方面,Windows Mobile 5支持DirectX 3D Mobile。.NET应用程序可以通过Microsoft.WindowsMobile.DirectX类库来调用D3D Mobile,而C++应用程序可以通过COM接口的方式来调用。

在Windows Mobile设备上普遍使用的GPS全球定位系统也得到了更好的支持。Windows Mobile 5提供了GPS Intermediate Driver,使应用程序可以使用统一的API接口来调用GPS系统。

Windows Mobile 5提供了一个叫做“ExitWindowsEx”的函数,允许软件重启操作系统。Pocket PC使用该函数可以重启系统,而Smartphone支持关机和重启两种功能。

在数据库方面,SQL Mobile虽然被广泛使用,但是因为SQL Mobile没有被安装到ROM中。所以如果需要SQL Mobile就需要占用一部分RAM内存空间,对于一些轻量级的应用就显得不是很合适了。所以Windows Mobile中还包括一个轻量级的数据库EDB,该数据库是CEDB的升级。

写在最后

在这篇文章里,我们领略了Windows Mobile 5为开发者提供的新特性。很多常用的特性都被加入到了API中。但是我们还要看到,许多新特性对于复杂的应用来说,还比较简单。如果想实现比较复杂的功能,还需要依靠自定义控件来实现。

最后也希望这篇文章能够帮助开发者们了解Windows Mobile 5的开发新特性。

关键词:

相关新闻

Windows Mobile 5中的新特性
2022-01-20 12:00:20
罗永浩“凭什么”还清四个亿?
2022-01-20 12:00:11
英特尔光纤接口Light Peak 创意来自苹果
2022-01-20 12:00:01
医疗版块遭遇黑天鹅,进入调整期
医疗版块遭遇黑天鹅,进入调整期
2022-01-20 11:23:22
BMJ:在对新冠疫苗调查的“事实核查”出错后 FB未能采取行动
2022-01-20 10:41:27
Cynerio报告:医院中一半的联网设备容易受到黑客攻击
2022-01-20 10:41:18
AT&T开始5G C-band部署 初期仅限8个美国城市
2022-01-20 10:41:07
苹果公司削减了一批Android手机的以旧换新冲抵价格
2022-01-20 10:40:58
美国苹果商店教育优惠现需通过UNiDAYS验证
2022-01-20 10:40:48
英国首相约翰逊宣布将取消大部分防疫限制措施
2022-01-20 10:40:38
RX 6500 XT显卡4GB显存惹争议 被AMD删除的文章又回来了
2022-01-20 10:40:28
九部门联合发文 推动平台经济规范健康持续发展
2022-01-20 10:40:18
折叠屏5079元?荣耀Magic V维修价曝光
2022-01-20 10:40:07
[组图]北极熊占领了废弃岛屿并搬进了空房子里
2022-01-20 10:40:07
美国FTC主席:面对脸书、亚马逊等科技巨头恐吓 反垄断绝不退缩
2022-01-20 10:39:56
一眼看出外挂?战地2042更新全体计分板
2022-01-20 10:39:54
放弃进军金融服务业 谷歌聘请PayPal资深高管负责支付业务
2022-01-20 10:39:44
新一代爆款神机!新版Redmi Note 11 Pro曝光 配备处理器绝了
2022-01-20 10:39:41
领克01被曝疑似虚假宣传 官方回应称车身结构示意无统一规范
2022-01-20 10:39:33
罗永浩将回归科技界,强调不学扎克伯格
2022-01-20 10:39:29
研究称30%流通中比特币的买家现在正在赔钱
2022-01-20 10:39:21
碰瓷iPad mini?联想拯救者Y700高刷支持
2022-01-20 10:39:15
伊利诺伊州新法将要求苹果谷歌允许开发者使用其他支付系统
2022-01-20 10:39:08
定档2月下旬 OPPO新品发布会日期曝光
2022-01-20 10:39:01
红十字国际委员会遭受网络攻击 超51.5万名“高危人群”的数据遭泄露
2022-01-20 10:38:55
微信官方揭秘:要买的微信红包封面都是骗局
2022-01-20 10:38:47
微软CEO:改革动视暴雪工作文化将是一项重要的工作
2022-01-20 10:38:42
搭载10nm赛扬处理器 英特尔发布NUC 11 Essential迷你主机
2022-01-20 10:38:32
通用汽车EV电解决方案:在电网不足的地方使用氢气
2022-01-20 10:38:29
【手慢无】联想拯救者主机即将促销 11600KF+30T0Ti仅售7989元
2022-01-20 10:38:17
2021居民收入榜出炉:北京上海人均可支配收入超7万
2022-01-20 10:38:16
包括4G和5G版 Redmi Note 11系列将在海外登场
2022-01-20 10:38:02
[图]Windows 11设置应用即将可以管理微软和Office账号了
2022-01-20 10:38:01
振荡器自生振荡分析之反馈理论与barkhausen准则
2022-01-20 10:30:37
LCD1602.h头文件下载(完美液晶驱动文件)
2022-01-20 10:30:28
GPS-GPRS定位定向导航系统
2022-01-20 10:30:18
编码器的作用
2022-01-20 10:30:09
什么是MMDS系统
2022-01-20 10:30:00
美国5G部署为航空让步 美国闹停飞监管要担责
2022-01-20 09:10:49
俄罗斯搜索巨头Yandex和解反垄断诉讼
2022-01-20 09:10:40
Facebook批评人士呼吁该公司公布印度人权评估报告
2022-01-20 09:10:32
苹果公司未来可能停止iOS 14安全更新 以促使更多人升级iOS 15
2022-01-20 09:10:23
巴菲特旗下伯克希尔拟39亿美元投资可再生能源项目
2022-01-20 09:10:15
港交所上了第一家SPAC“空壳公司”
2022-01-20 09:10:07
战投部解散 复盘字节跳动7年出手200次的“投资版图”
2022-01-20 09:09:58
网友吐槽手机行业没进步 罗永浩回应称其年后回归科技业界
2022-01-20 09:09:50
美国一军嫂用AirTags追踪黑心搬家公司
2022-01-20 09:09:41
微软正用Fluent Design升级任务管理器 新版截图已曝光
2022-01-20 09:09:32
媒体评公共场所监控视频外泄:不是小事 必须引起警惕
2022-01-20 09:09:23
Instagram正在跟一小群创作者测试付费订阅服务
2022-01-20 09:09:14
白宫将加强美国国家安全局和国防部的网络防御措施
2022-01-20 09:09:05
保时捷设计工作室推特别版911 Targa 4 GTS来庆祝其50周年纪念日
2022-01-20 09:08:56
美国一位花艺设计师详细介绍在摔倒后如何使用AirPods和Siri求救
2022-01-20 09:08:47
FAA:一些波音777机型被允许飞往有5G C波段的机场
2022-01-20 09:08:38
Windows 11 Build 22538发布:改进Voice Access功能
2022-01-20 09:08:29
通用汽车宣布计划利用氢燃料电池制造移动发电设备
2022-01-20 09:08:20
连锁超市Aldi开设首家无人收银商店
2022-01-20 09:08:10
FTC要求25家公司停止对预防或治疗COVID产品的虚假宣传
2022-01-20 09:08:01
电动机工作原理
2022-01-20 09:00:35
什么是数字孪生?终于通俗的解释清楚了!
2022-01-20 09:00:27
用指针万用表测电阻的方法与经验
2022-01-20 09:00:18
中国航天发射创新纪录 不到三小时两枚火箭升空
2022-01-20 09:00:09
空调集中控制系统
2022-01-20 09:00:02
产能限制!苹果iPhone14全系120HZ或需等到2023年
产能限制!苹果iPhone14全系120HZ或需等到2023年
2022-01-20 08:29:29
2021年第四季度苹果iPhone出货量占全球智能手机份额五分之一
2021年第四季度苹果iPhone出货量占全球智能手机份额五分之一
2022-01-20 08:27:41
Win11 2022新版22538发布:完善语音访问,实现触摸键盘数字化指令
Win11 2022新版22538发布:完善语音访问,实现触摸键盘数字化指令
2022-01-20 08:25:58
三星Galaxy Tab S8 Ultra曝光:采用刘海屏,支持4K分辨率
三星Galaxy Tab S8 Ultra曝光:采用刘海屏,支持4K分辨率
2022-01-20 08:24:08
新版Redmi Note 11 Pro曝光:6.67英寸显示屏+5000毫安大电池
新版Redmi Note 11 Pro曝光:6.67英寸显示屏+5000毫安大电池
2022-01-20 08:21:36
数据研究显示2022年笔记本电脑销量将下降 出货量预计减少3.3%
数据研究显示2022年笔记本电脑销量将下降 出货量预计减少3.3%
2022-01-20 08:21:36
苹果突然强推iOS 15:IOS 14一段时间后将彻底停更
苹果突然强推iOS 15:IOS 14一段时间后将彻底停更
2022-01-20 08:19:15
NVIDIA新驱动解锁GPU隐藏技能:可极大减轻资源负担
NVIDIA新驱动解锁GPU隐藏技能:可极大减轻资源负担
2022-01-20 08:17:47
联发科全球首秀Wi-Fi 7:较WiFi6速度快上2.4倍
联发科全球首秀Wi-Fi 7:较WiFi6速度快上2.4倍
2022-01-20 08:15:17
AMD正式发布入门新卡RX 6500 XT:游戏加速频率可达2610MHz
AMD正式发布入门新卡RX 6500 XT:游戏加速频率可达2610MHz
2022-01-20 08:12:05
1599元起!AMD发布入门新卡RX 6500 XT:功耗优秀
2022-01-20 07:39:09
2021年全球电脑出货量出炉:联想第一、苹果第四
2022-01-20 07:39:02
不能薅羊毛:美国苹果教育折扣将验证
2022-01-20 07:38:55
【手慢无】千元带鱼屏好价促销! 优派VX2980-HD好品质
2022-01-20 07:38:49
移动版3070Ti跑分曝光!竟可媲美RTX3080
2022-01-20 07:38:42
表示失望 微软员工嫌弃动视暴雪有负面
2022-01-20 07:38:34
NV DLDSR技术为《战神》带来绝佳体验
2022-01-20 07:38:27
特斯拉自动驾驶汽车致命车祸首次被控重罪
2022-01-20 07:38:19
知情人士:瑞幸咖啡考虑重新上市 最快年底登陆纳斯达克
2022-01-20 07:38:16
别随手就扔 这款游戏说明书卖12万 比游戏还值钱
2022-01-20 07:38:10
汤加遭遇30年最强火山喷发 将给世界带来哪些影响?
2022-01-20 07:38:08
针对挖矿重新开发 英特尔第一款专业矿卡首现身
2022-01-20 07:38:02
“反垄断斗士”FTC主席:面对巨头威胁或恐吓不会退缩
2022-01-20 07:38:01
国美推飞触二代平板电脑
2022-01-20 07:30:30
冰箱电磁阀工作原理
2022-01-20 07:30:24
百度与莆田二者为何总是相爱相杀?
2022-01-20 07:30:19
光波炉原理
2022-01-20 07:30:14
从零开始学电路基础- -从零开始学电路基础,初学者们看这里~~~
2022-01-20 07:30:09
无源雷达的发展历史和趋势
2022-01-20 07:30:03
苹果发布USB-C接口手表磁吸无线快充模组
2022-01-20 06:13:37
NVIDIA解锁GSP方案 以进一步改善系统性能
2022-01-20 06:13:32
Chrome 99 Canary恢复了可移除预置搜索引擎选项的功能
2022-01-20 06:13:26
全球最大虚拟货币交易网站之一被黑 损失至少1500万美元以太币
2022-01-20 06:13:21
一机难求:这个春节,你也许买不到折叠屏手机
2022-01-20 06:13:15
哈啰虎年限量款电动车正式亮相:全球10台 不卖
2022-01-20 06:13:10
字节裁撤投资业务 腾讯投资合伙人退出多家法人……互联网战投要刹车?
2022-01-20 06:13:04
三星提前结束液晶显示器(LCD)业务 加速转型QD-OLED
2022-01-20 06:12:59

热门文章

热点专题