我理解的Windows moblie

偶半年前写的文章,在这边也发表一下

     先从Windows ce说起,有些朋友问我是做什么的,我说我做wince的,做技术的朋友一般也就不用再做解释了,但是面对不懂技术的朋友就不容易说清楚。我一般也就回答说:跟windows差不多...
     当然,它的确和windows非常类似,只是定位不同。Windows ce是微软开发的嵌入式操作系统,简称是EOS。该系统为抢占式多任务的实时操作系统,具有模块化可定制的特点。与windows相比Windows ce要小许多,有文章说,它也比windows更快更可靠,但是我个人以为,可以更快更可靠也是因为它相对较小的缘故,当然,作为实时操作系统,在一些应用上的可靠性是会很高的。现在有一个问题,就是:Windows ce有多大的用途?和向我提出疑问的朋友们一样,在进入这个领域之初我自己也有过疑惑。那时我知道它用于嵌入式,也知道可以可以涉及多个领域,但是在国内的日常生活中还是很少像windows或linux一样可以的的确确的感受到它的存在。那么Windows ce到底存在与我们生活中的哪些角落呢?发现得太少,其实有时候是我们不够留心。平时我们在公路上见到交警手中拿着的用触笔写写画画的东西,偶尔坐火车,在进站前有警察拿着同样的东西登记一些乘客的信息...   这些都是Windows ce系统的设备。Windows ce可以应用在网络(网关路由),工业控制(机器生产线控制),测量设备,信息化家电,医疗设备,GPS导航相关设备。 可以应用到公安,城市交通,铁路,税务,城管,电力,野外作业,军事... 最后,还有一项应用,是贴近普通人们生活最近,也是发展前景最广阔的应用。也是我要主要介绍的:Windows moblie

     Windows ce作为一个可定制的系统,为了应用于移动通讯领域(比如手机),微软在Windows ce的基础上开发定制了Windows moblie。到今天为止Windows moblie的最新版本是6.1,虽然微软已经发布了Windows moblie7的功能预览,但是目前国内还见不到它的任何应用,准确来说它还未完成,仍然在在开发中。

     Windows moblie的基础上又有2个不同的定制,分别是smartphone 和 Pocket PC。smartphone看名字就可以联想到了,它应用于移动电话,而Pocket PC起初是用于掌上电脑,默认情况下并不具备电话功能,但是经过后来的改变。现在我们一般见到的Pocket PC的版本都是和smartphone一样,应用于手机。这两个同属于Windows moblie的子版本,最主要的区别也就是触笔的支持上。只有Pocket PC是支持触笔的。在它们上面的应用程序开发,在考虑周全的情况下,是可以相互移植的,本质区别并不多。要提醒一点,要在smartphone 和 Pocket PC轻松的相互移植要注意的是,最好不要使用MFC,因为微软为了给smartphone瘦身,并不提供对MFC的支持。 如果你急于动手,盲目的先实现了一个使用MFC的Pocket PC的应用,在实现smartphone上的移植时,你的程序很大块的面积将必须要重写。一般情况下,先从smartphone入手,再向Pocket PC移植是比较正确的选择,因为相对于Pocket PC,smartphone的某些支持更少,应该这样想,就像在同一个系统下,功能更多的高版本和低版本,做到向下兼容绝对比向上兼容要容易得多。

做Windows moblie开发,首先要接触的是它的开发工具。较早被使用的是EVC,一种开发界面和使用习惯类似于VC的开发工具,同样是使用C++作为开发语言。他最新的版本是EVC4 sp4,但是因为微软已经放弃对它的持续更新,以后也不会有新的版本出现了,现在已经不是我们做Windows moblie开发的首选工具了。而另一款同样被微软放弃的工具EVB,因为基于VB的更弱小的功能,则几乎已经被人们遗忘了。现在,在VS2008还没有被大肆推广前,VS2005应该说是Windows moblie开发的首选工具。

       目前Windows Mobile的开发语言有.NET(包括C#和VB.NET)和C++。C#近几年一直深受微软的大力推广,虽然很多老牌的程序员并不看好它,但事实上它的推广还是做得很好的。目前我个人估计,国内在Windows moblie的应用程序开发上C#程序员的数量是多过C++的。当然,得出这个结论是有理由的。网上一些关于Windows moblie的论坛,讨论群等,都是基于.net开发的数量较多,而.net又尤以C#为主打。如果要搜寻Windows moblie开发的C++中文资料,一般来讲是相对比较少的。目前为止我也没有见到过中文的以C++为基础介绍Windows moblie开发的书籍,准确来说也并不是一本都没有,只是没有真正有用的可以作为教材的。想反,以C#为基础介绍Windows moblie的中文书籍近来还是出了一些。可见C#的市场貌似是要大些的。在一些政府部门和一些小的开发公司,做Windows moblie的开发现在已经基本都是使用C#。说了C#这些好处,并不代表我是C#的支持者。归到低,它只是一个开发的语言工具,市场大的根本原因,是它的简单易用。谁不喜欢简单的东西,C++实在是有过复杂。一些网上使用C#的开发同行在知道我一直使用C++后,认为我有自虐倾向。当然,这是他们在开玩笑。不过话说回来,由简入奢易,由奢入简难,所有我还是认为,做开发,从c\c++开始起步是明智的选择。不管有多少初学者在研究C#,现在大的开发公司,比如多普达,腾讯等等,都仍然是使用c\c++为主的,C#的功能和性能毕竟是有局限的。

       最后,介绍一下我所熟悉的开发方式。Windows Mobile5.0以前的版本做开发,除了EVC还有vs2003可以选择,如果项目是现在才开始的,这些工具其实都可以抛弃了,与vs2005相比,它们显得很不好用。vs2005做Windows Mobile开发仍然是微软一贯的做法,它是向下兼容的,同时可以开发5.0和之前的版本。需要的准备工作就是从微软的网站上下载相应版本的SDK。目前已经有6.0的sdk可以下载。上一篇我提到了在Windows Mobile下的两个主要版本smartphone和Pocket PC之间做到软件可移植的问题。这里再详述一下。在使用C++的情况下,为了移植的方便,一般不要在开发Pocket PC的时候使用MFC。但是,不用MFC,用什么?直接使用Windows Mobile的SDK也是一种选择,但是这样的开发还是做起来比较繁琐的。现在,WTL在Windows开发上人们已经使用得很多了。它有很多优点,比如开发出的程序要比MFC的东西小不少,而且方便好用,它的准确介绍可以google一下其相关说明,我在这里就不多说。因为Windows Mobile的SDK和windows开发的win32 sdk的一致性,WTL对Windows Mobile的SDK也是完全支持的。要在vs2005下使用WTL,其版本至少在7以上,个人推荐WTL8.0。就像MFC一样,在安装以后,它同样可以在vs下生成Windows Mobile开发的向导选项。有了这些工具,我们就可以做Windows Mobile的开发了。但是目前国内在Windows Mobile开发领域的学习资料数量还是很有限的。要充分发掘Windows Mobile开发的潜力,就必须有快速熟悉它的方式。这一点微软做得很贴心,除了相应SDK自带的帮助文档外还有内容丰富的MSDN,如果这些还不够直观,微软还在相应SDK安装目录下的sample目录下放了很多的实例程序,对Windows Mobile开发需要的常用功能一一做了例子。

posted @ 2008-07-07 19:18  猫咪  阅读(3020)  评论(7编辑  收藏  举报