财讯中国

Windows Mobile 5中的新特性

来源:网络 2021-12-16 12:20:05

微软最近推出下一代移动设备操作系统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的开发新特性。

关键词:

相关新闻

走安顺进定西 海信冰箱再现教育扶贫“山海情”
2022-01-17 13:48:41
最强性能二合一轻薄本ROG幻X 1月24日即将开启预约
2022-01-17 13:48:30
小米竖向折叠屏 价格有惊喜主打女性市场
2022-01-17 13:48:19
QQ飞车手游S联赛总决赛 真我GT2系列成2022官方指定用机
2022-01-17 13:48:08
免费获得小米有品会员!小米有品有鱼App3月停运给用户送福利
2022-01-17 13:47:57
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 13:46:06
【手慢无】240GB固态秒杀促销 仅售168元
2022-01-17 12:12:24
AMD新款Radeon Pro专业卡:终于用上6nm
2022-01-17 12:12:16
《永劫无间》再曝新英雄 顾清寒傲立雪中
2022-01-17 12:12:07
三星新品发布会2月9日召开 S22系列即将登场
2022-01-17 12:12:00
12月显卡出货量下降19%,还是涨价的锅
2022-01-17 12:11:52
Intel i5-12400性能暴涨30%!还是超频管用
2022-01-17 12:11:44
黑鲨和玩家同在!新机沿用SSD存储?
2022-01-17 12:11:36
是买不起的样子:3090ti起步2万3
2022-01-17 12:11:27
无线充电加持!曝iPad Pro 6升级M2处理器
2022-01-17 12:11:19
宁德时代:不差钱还融资是为了增产
2022-01-17 12:11:11
好评94%!7万在线!《战神》PC版疯了
2022-01-17 12:11:00
【必买】支持MagSafe磁吸功能 魅族PANDAER“黑化独角兽”手机壳支持iPhone 13系列
2022-01-17 12:10:53
腾讯游戏:寒假打游戏的时间最多14个小时
2022-01-17 12:10:43
1小时游玩假?腾讯春节防沉迷日历发布
2022-01-17 12:10:34
2月9日亮相 Galaxy S22全新配色将来袭
2022-01-17 12:10:23
京东2022年将招聘超2万高校毕业生
2022-01-17 12:10:15
美国拍卖5G频谱 运营商投入超300亿美元
2022-01-17 12:10:06
8088元起 微软Surface Pro 8 商用版正式开售
2022-01-17 12:09:58
起售或是250欧元 Redmi Note 11将在欧洲发布
2022-01-17 12:09:50
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 12:08:06
好料好味道,有礼有年味——京味客祝您虎年福礼满满
好料好味道,有礼有年味——京味客祝您虎年福礼满满
2022-01-17 10:59:35
iPad Pro 6曝光:配置拉满 3月发布 7000起
2022-01-17 10:58:23
非公RTX 3090 Ti显卡海外竟上架:最贵2.9万 翻了一倍
2022-01-17 10:58:14
三星2月9日发布S22系列:真机在官网曝光
2022-01-17 10:58:03
三星S21手机限时立减1450 现3549 今晚截止
2022-01-17 10:56:24
2022年第五届CRO全球责任峰会成功举办
2022年第五届CRO全球责任峰会成功举办
2022-01-17 10:55:22
三星全年卖3亿台手机:卖最多的不是S21
2022-01-17 10:55:01
售价过万!曝三星Galaxy S22 Ultra有1TB版
2022-01-17 10:54:49
2022年PS5必买游戏榜单:照着买没错
2022-01-17 10:54:40
【手慢无】新装机神器 i5-12400F处理器1499元热销
2022-01-17 10:54:30
英特尔13代酷睿或将增大缓存容量 L2 + L3达到68 MB
2022-01-17 10:54:20
功耗爆表 i5-12400超频至 5.2 GHz
2022-01-17 10:54:07
配有手写笔 moto G Stylus手机视频曝光:屏幕开孔位于中央
2022-01-17 10:53:50
小米MIX FOLD2真机上手图曝光 内屏无挖孔
2022-01-17 10:53:38
通话变吵闹?iPhone13移除电话降噪功能
2022-01-17 10:53:25
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 10:49:36
周秉钧韩银山一行参观广东东江纵队纪念馆
周秉钧韩银山一行参观广东东江纵队纪念馆
2022-01-17 09:21:35
小米新机海外发售:竟然比小米12 Pro强
2022-01-17 09:09:34
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 09:08:04
iPad Pro 6曝光:升级M2处理器并支持120HZ高刷新率
iPad Pro 6曝光:升级M2处理器并支持120HZ高刷新率
2022-01-17 08:41:04
苹果新旗舰AR设备曝光:可支持8K分辨率,售价超万元
苹果新旗舰AR设备曝光:可支持8K分辨率,售价超万元
2022-01-17 08:38:24
三星S22 Ultra曝光:12GB+512GB版本售价超万元
三星S22 Ultra曝光:12GB+512GB版本售价超万元
2022-01-17 08:33:04
成本上升!曝AMD EPYC处理器涨价10%~30%!
成本上升!曝AMD EPYC处理器涨价10%~30%!
2022-01-17 08:31:18
中国区12月显卡出货量出炉:七彩虹近20万出货量稳坐第一
中国区12月显卡出货量出炉:七彩虹近20万出货量稳坐第一
2022-01-17 08:28:59
Intel i5-12400全核超频5.2GHz:最大加速功耗117W
Intel i5-12400全核超频5.2GHz:最大加速功耗117W
2022-01-17 08:27:51
微信iOS版更新加入语音暂停功能:长语音消息可暂停并继续播放
微信iOS版更新加入语音暂停功能:长语音消息可暂停并继续播放
2022-01-17 08:26:14
低级错误!火狐浏览器无法上网原因竟是程序员大小写搞错了
低级错误!火狐浏览器无法上网原因竟是程序员大小写搞错了
2022-01-17 08:24:11
藏起来我就用不了了?教你如何在Win11上找出隐藏IE浏览器
藏起来我就用不了了?教你如何在Win11上找出隐藏IE浏览器
2022-01-17 08:22:23
一键切换不用愁!Win11必备小工具让体验更顺手
一键切换不用愁!Win11必备小工具让体验更顺手
2022-01-17 08:18:40
想让Win11运行Win10开始菜单 下载这个小程序 1秒解决
2022-01-17 07:42:21
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 07:40:45
专业卡也用上6nm?AMD新款Radeon Pro专业卡曝光
2022-01-17 06:11:37
PC画质居然更优秀?《战神4》三平台对比
2022-01-17 06:11:29
显卡盲盒!800块有机会抽到RTX3090
2022-01-17 06:11:22
Intel 13代酷睿缓存或将提升至68MB
2022-01-17 06:11:14
三星Galaxy S22发布会将在2月9日23:00开启
2022-01-17 06:11:07
Powerbeats用户集体起诉苹果
2022-01-17 06:10:59
史上最烂《战地》续作!外挂都不想为其更新
2022-01-17 06:10:52
44万人强力围观 小米之家山西分舵开了个话题直接上热搜
2022-01-17 06:10:44
Win11测试出现乱码!中文阅读受到影响
2022-01-17 06:10:34
雷蛇灵刃14发布:标配锐龙9 6900HX 顶配3080Ti 售价1.3万
2022-01-17 06:10:25
美国玩家也氪金!《原神》2021年在美国狂赚近25亿人民币
2022-01-17 06:10:17
小米平板5系列全量更新MIUI13 不会更新的看这里
2022-01-17 06:10:09
苹果首次允许App内第三方支付
2022-01-17 06:10:00
十年了!Windows11新音量调节指示器
2022-01-17 06:09:52
买得起Kindle看不起书 到底谁在为电子水墨屏买单?
2022-01-17 06:09:44
摩托罗拉新机曝光 搭载骁龙SM8475+125W快充
2022-01-17 06:09:34
威刚秀肌肉!PCIe 5.0固态读取速度恐怖!14GB/s
2022-01-17 06:09:25
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-17 06:08:02
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-16 22:46:35
曝iPhone 14全系标配120Hz:起售价还是5999
2022-01-16 21:09:44
ROG新品!在CES推出42英寸显示器 OLED面板
2022-01-16 21:09:33
12代酷睿新品!雷神推出游戏/设计新主机
2022-01-16 21:09:21
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-16 21:08:01
Moto新机曝光,即将开启两亿像素新时代
2022-01-16 19:41:57
小米11系列开启推送MIUI 13系统,公测反馈良好
2022-01-16 19:41:44
红魔7跑分、配置曝光,单核1219,多核3732
2022-01-16 19:40:37
Redmi K50 高配版有望搭载索尼 IMX766 传感器
2022-01-16 19:40:15
解决镀金端子氧化发黑问题 苹果将推新版Lightning充电线
2022-01-16 19:40:02
120Hz高刷 OPPO平板电脑现身跑分网站
2022-01-16 19:39:51
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-16 19:38:29
2000元到手 骁龙680版Redmi Note11要来
2022-01-16 18:10:05
2月9日见!三星S22系列手机发布会定档
2022-01-16 18:09:49
小米 11 Ultra开启内测NFC“读写勿扰”与“解锁后使用”功能
2022-01-16 18:09:35
后置四摄 红米Redmi Note 11S渲染图曝光
2022-01-16 18:09:21
曝真我GT2 Pro春节前上市 20日举行预沟通会
2022-01-16 18:08:02
现磨咖啡5元一杯 蜜雪冰城讨好小镇青年
2022-01-16 17:18:11
又一家中资企业打入日本加密货币市场 Amber数亿日元买下持牌交易所
2022-01-16 17:17:59
电动车 没有新革命
2022-01-16 17:17:47
电动车“私桩共享可行吗”引热议 威马汽车创始人给答案
2022-01-16 17:17:37
防疲劳、还是导航信号?高速路上的绿色激光灯有什么用?
2022-01-16 17:17:25
AT&T、Dish和T-Mobile投入数十亿美元购买更多5G频谱
2022-01-16 17:17:14
美国税局可能会对NFT和加密货币征收不同的税
2022-01-16 17:17:03
虚拟偶像满足粉丝想象?专家预警或影响结婚生子
2022-01-16 17:16:50

热门文章

热点专题