首页
社区
课程
招聘
[讨论]新手学习Windows Mobile 开发咨询,请解惑.
发表于: 2009-5-10 21:17 18709

[讨论]新手学习Windows Mobile 开发咨询,请解惑.

2009-5-10 21:17
18709

我对Windows Mobile 开发充满了好奇,首先我先申明的是有一些开发相关问题,我已经google了很多,有些问题得到了答案,有些问题充满了疑问;
不排除我的搜索词语有问题,所以来到这里,希望在此行业的前辈们耐心指点一二,谢谢!

A 我已经了解到Windows CE 是一个可以制定的平台,同时也发布相应的SDK;
   也了解到Windows Mobile是CE的一个子系统.
   
1 疑问:
         Windows Mobile SDK 6.0 开发的应用程序 是否同时可以在
         Pocket PC /SmartPhone 手机执行呢?

2 疑问:
         Windows Mobile 6.5的系统已经出来了,相应的SDK应该是6.5呢,还是目前的6.0     就可以开发使用?

3 疑问:
         经常看到smartPhone 2003 开发等等之类的,这个smartPhone 2003代表什  么Windows Mobile 的什么版本号?Wm5.0? 6.0??

4 疑问:
         我对.net cf 3.5有兴趣,是否先学习Visual C#语言?然后再学习手机上的C#?

5 疑问:
  是学习Windows CE 6.0 开发呢?还是学习Windows Mobile 开发?
  他们之间所有API都是互相兼容的吗?

6 疑问:
  Windows Mobile DirectX 支持的如何?

7 疑问:
         如何从小白开始入门呢?要有怎样的一个学习计划?


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (45)
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
2
首先要赞一下noid的学习态度和方法!
通过Google查询,多方面了解这个平台的基础知识是很好的学习方法。同时能够总结遇到的问题,积极寻求答案对提高很有帮助!

我尝试根据自己的经验回答一下,欢迎其他朋友补充!

问题:Windows Mobile SDK 6.0 开发的应用程序是否同时可以在Pocket PC /SmartPhone 手机执行呢?
回答:目前Pocket PC和SmartPhone两个平台走向融合是一个趋势。所以在WM6.0以后在平台的命名上已经不是很严格的区分这两个平台了。这两个平台的API绝大多数是相通的,所以大多数程序可以在这两个平台直接移植。

问题:Windows Mobile 6.5的系统已经出来了,相应的SDK应该是6.5呢,还是目前的6.0就可以开发使用?
回答:根据我的经验,感觉没有必要追赶最新的SDK,安装个6.0或者6.1的SDK就可以了。首先学习最基本,最重要的API。掌握之后了解一下6.5有哪些新的功能即可。

问题:经常看到smartPhone 2003 开发等等之类的,这个smartPhone 2003代表什么Windows Mobile 的什么版本号?Wm5.0? 6.0??
回答:我记得SmartPhone2003对应的Windows CE 4.2。是一个很老的版本了。如果你安装了VS2005会默认带有这个版本的模拟器。如果安装的是VS2008默认带有的是WM5.0。对于基础编程,比如文件,进程,线程,注册表,字符串处理,等等。使用SP2003模拟器还是可以的。GPS等比较高级的编程就需要WM5.0以上的版本。个人建议你使用VS2005+WM6.0SDK。因为WM6.0提供了一些其他功能的模拟器,可以模拟GPS,电话,短信,GPRS上网等功能。

问题:我对.net cf 3.5有兴趣,是否先学习Visual C#语言?然后再学习手机上的C#?
回答:如果想研究.NET CF学习C#是应该的。不过“手机上的C#”和桌面平台的没有本质区别。呵呵。只是.NET CF的类库同桌面平台相比要更小一些,有些类库不支持。

问题:是学习Windows CE 6.0 开发呢?还是学习Windows Mobile 开发? 他们之间所有API都是互相兼容的吗?
回答:对于第一个问题关键看你要做什么了。如果你是要做智能设备“应用程序”开发,则可以主要学习WM开发。如果你要做通用的嵌入式平台(比如MP3,导航仪开发)开发,从硬件、驱动等底层做起,并剪裁、构建OS就需要加深对CE的了解。WM的很多API,CE也有,但是CE的更多,更广。

问题:Windows Mobile DirectX 支持的如何?
回答:支持的很好!

问题:如何从小白开始入门呢?要有怎样的一个学习计划?
回答:对你的情况不太了解,很难帮你订计划。这和你想达到的目标关系密切。
2009-5-10 22:01
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢 加百力 版主深夜回复问题,我先仔细消化一下您回答的这些问题;
我想这对我们做IT和开发的人来说,无疑又是一种新的机会,再次感谢斑竹的回复!
2009-5-10 22:14
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
4
“我想这对我们做IT和开发的人来说,无疑又是一种新的机会”

这句话,说的很有道理。我是2007年开始做这个平台的研究的。我发现:很少有大学开设CE和ARM的课程,所以这个方向的学生不多。很多高手都是在公司里面才开始接触并提升起来的。

我比较喜欢去" target="_blank">www.zhaopin.com了解行业的发展。
最近两年招聘Windows Mobile开发的公司越来越多,涉及的领域也越来越广了。

你今天提的问题,我在两年前都遇到过。

所以静心学习,逐步积累,你一定会越来越强的!
祝你成功!
2009-5-10 22:25
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢热心的斑竹 ,激动! 也希望借版主的金口玉言,我一定努力学好,做好!
2009-5-10 22:31
0
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
6
1 疑问:
         Windows Mobile SDK 6.0 开发的应用程序 是否同时可以在
         Pocket PC /SmartPhone 手机执行呢?
不可以,Smartphone和PPC被视为两种有区别的手机应用,存在些许API差异和界面操作特性差异等严重问题,为SP写的程序有部分能勉强在PPC上跑但是会遇到很多神奇的疑难杂症,而为PPC写的程序大部分则直接不能启动或启动后由于无法点击相应界面按钮而无法操作甚至不能退出。

2 疑问:
         Windows Mobile 6.5的系统已经出来了,相应的SDK应该是6.5呢,还是目前的6.0     就可以开发使用?
看你的程序了,目前还只有6.0的SDK,但是足够用了,如果你程序特性里不需要微软为WM5以上添加的新API和方法,你用WM2003写的代码照样能跑,这就是一些程序所谓的“全平台兼容”称谓了,因为它是用WM2003 SDK写的,而用WM5/6 SDK写的则不能向下兼容,但是能向上兼容,有时候真觉得微软脑子是不是烧了。

3 疑问:
         经常看到smartPhone 2003 开发等等之类的,这个smartPhone 2003代表什  么Windows Mobile 的什么版本号?Wm5.0? 6.0??
1.2003代表CE4.x,WM5和6代表CE5.x,目前还没有CE6.x
2.Smartphone面向以手机应用为主的人群,PocketPC面向PDA应用人群,两套SDK和API不太兼容。


4 疑问:
         我对.net cf 3.5有兴趣,是否先学习Visual C#语言?然后再学习手机上的C#?
推荐你先掌握Win32下的.net和C编程然后再接触CompactFramework,手机的API比电脑上少了很多,还有些用法也不一样,要学会触类旁通。另外.net的程序很慢,因为它是中间代码,推荐学C。

5 疑问:
  是学习Windows CE 6.0 开发呢?还是学习Windows Mobile 开发?
  他们之间所有API都是互相兼容的吗?
两者不同,搞CE开发的说不清WM,反之同理,WM里可没有Explorer和图标桌面这些东西。
API理论上是能兼容,但实际上还是存在差别。


6 疑问:
  Windows Mobile DirectX 支持的如何?
支持的不错,不过调用库不同,通常是一个叫gx.dll的来实现所有warpper。

7 疑问:
         如何从小白开始入门呢?要有怎样的一个学习计划?
先学好Win32编程吧,同时买一部WM6的PPC手机,好好了解下它的应用,不推荐购买德州仪器OMAP 850 CPU的机!你会后悔的!在德州仪器以200MHz初始频率拼死拼活超频到260的时候,Intel XScale初始频率416的能轻松超到520还不带颤抖的,超到624才稍微抖一下!
2009-5-11 10:50
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢 NETTF小金的指点,
后来查询了一下 Pocket PC 和Windows Mobile上,确实有一些API不相同,不过很神奇的是,有的程序在两种机型上不能通用,而有的就可以;

下面简单的说一下:
个人做开发已经有几年经历:
熟悉 :Visual C++,Blorand Delphi ,Blorand C++ Builder等三种程序开发工具
语言: C/C++,Object Pascal 不敢说精通,但一般简单应用足够了.
        asm32,能看的懂,简单的可以写个几行.
系统:熟悉和使用 Windows系统绝大多数API,进程,线程,服务... 够用,但不精通.
网络:Socket编程,熟悉
驱动:NT 刚入门,能明白一些驱动是怎么回事,派遣,过滤等机制,目前算皮毛.
移动:抱有很大的兴趣,同时也有很多时间来专门学习.
2009-5-11 11:04
0
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
8
那你经验很足了,就是缺个PPC手机,嘿嘿嘿……
我也是几年的Win32开发经验,可能一些地方还比不上你,但是我入手一台PPC后一个月内熟悉了它的所有特性然后就开始为它编程了。
2009-5-11 11:07
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我的个人学习目的:
1 3G的到来,应该对开发人员会有新的需求,对于产品会有新的市场,我要做好准备工作.
2 我想,我想要学习的应该是SmartPhone开发,毕竟手机是通讯工具,必不可缺少的,而且将来代替Pda 也许会是一种趋势吧.
2009-5-11 11:07
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
先者为师,呵呵,可以给我们这样的小白分享一下您的学习经历和笔记吗?
2009-5-11 11:09
0
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
11
-_-没啥笔记,没这个习惯……就是觉得感兴趣然后就借着Win32的编程经验开始写了,去国外MSDN查相关API,或者装一整套VS2008的MSDN能带有Windows Mobile的API详解。

还有些时候不懂该用什么API的就去ida调试人家现成的程序来看看他的实现过程 (*^_^*),然后再去找对应的API说明,慢慢就能熟悉了。

注意CE下的编程是Unicode的,用C的时候要记得用对应的Unicode版本API
2009-5-11 11:18
0
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
12
我觉得你应该学习PPC开发,注意,我说的PPC也是一种手机平台,只不过更接近PDA一些。而商务办公是必须PDA类手机不可的。我早期也接触了一下Smartphone,觉得放不开手脚去写代码,Smartphone里你很多时候必须跟左右菜单打交道,挺烦的,而且商务应用不好,我在用了3年Smartphone后投奔了PPC平台,现在很后悔为啥不早点投奔呢。

你或许对PPC的概念存在一些误解哦,PPC也是手机来的,它是“带通讯模块的PDA”,应用面比Smartphone要多得多了。

例如最新机型,Touch HD
http://mobile.younet.com/files/21/21030.html
2009-5-11 11:23
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
说到这里,我还真有点较真的感觉呢,呵呵 请别见怪哈;
我说说自己的看法,为什么选择手机呢
主要就是:
1 3G的推广,肯定是先手机,再上网本
2 mini上网本会做的越来越好,而且功能比pda多的多
3 现在一些高档手机几乎就是pda了

所以pda面对mini上网本和高端的商务手机,将来也许会慢慢淡化了?
2009-5-11 11:33
0
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
14
3G的推广,肯定是先手机
这是对的,不过,目前3G智能手机主要是在PPC平台和类似的操作平台上的,如iPhone,M8等,而Smartphone那边就没出来太多机型。接近Smartphone风格的3G平台就诺挤压S60了。

另外我是说PPC,不是PDA,两者还是有差别的。
2009-5-11 11:35
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
15
小金总是那么热情,赞一个!鼓励大家向小金学习!都会受益!
2009-5-11 11:52
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
16
有WIN32的开发经验,学习WM阻力不大。微软的设计就是为了让PC平台的开发者可以平滑的过渡到WM平台来。
2009-5-11 11:55
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
17
移动智能平台的潜力很大。

我个人认为手机和PDA将来将走向融合。因为硬件的性价比正在飞速提升,可以支持越来越多的功能。不止是手机和PDA,导航仪,电视功能也会逐步集中融合到我们目前所说的“手机”中来。

“手机”将不只是打电话、发短信、拍照的工具而是可移动的智能信息处理设备!
2009-5-11 11:58
0
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
18


我写的一些程序截图
2009-5-11 12:00
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
看了上面NETTF小金的截图,想自己什么时候才能在Windows Mobile代码如流一样飞快的输入呢?
我下载了一些安装程序,安装的顺序"
1 VS2008 完全
2 ActiveSync 4.5 CN
3 NetCFSetupv35 (cf3.5)
4 Windows Mobile 6 Professional Images (CHS)
5 Windows Mobile 6 Professional SDK Refresh

应该这样一个顺序吧.我找了很多,可惜都是Windows CE开发的资料.
很少有windows Mobile 入门到精通,或者windowsmobile 核心编程之类的.
版主,小金,有推荐的开发参考资料吗?
2009-5-11 12:12
0
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
20
学Windows Mobile差不多就是接触Windows CE编程的一个过程。

看看MSDN,一个api例子:
http://msdn.microsoft.com/en-us/library/aa916815.aspx
2009-5-11 12:18
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
http://www.china-pub.com/39246&ref=ps
Microsoft Mobile移动应用开发宝典

http://www.china-pub.com/192099&ref=browse
C#与.NET 3.5高级程序设计(第4版)(C#圣经,好评如潮)   

这是我选定的两本书
2009-5-11 12:19
0
雪    币: 164
活跃值: (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
22
VS2008好像自带了WM6还是WM5的SDK了,和完整的CF 2.0
ActiveSync是用于连接真正手机用的。

目前不推荐你把CF升级到3.5,因为就连WM6里也只是内置了2.0,而不是所有手机用户都会去装那个体积相对庞大的3.5运行库的,这样会造成你写的程序通用性不高,至少在目前。2.0已经提供了足够的特性去开发了,其实都是一个用API的过程,真正要用到的CF自带特性支持是要购买的。

然后再贴一张,嘿嘿嘿


相关代码:
http://bbs.pediy.com/showthread.php?t=87504
2009-5-11 12:22
0
雪    币: 2604
活跃值: (64)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
23
缺少丰富的资料是新平台研发过程中不可避免的现象,这也好说明还没有很多人进入。

我主要是看MSDN逐组学习API的,所以才有《Windows CE API手册》的电子档出来。

掌握基本的API如文件、进程、线程、注册表、套接字等等逐步积累吧。

不要着急。逐步积累,每天有点进展就会逐步提高了!
2009-5-11 12:25
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
SOCKET s = socket (AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
                    这里1                      这里1
                   代替了AF_INET           0 默认TCP
if (s == INVALID_SOCKET) {
wprintf (L"Socket creation failed, error %d\n", WSAGetLastError ());
return;
}
SOCKADDR_BTH sab;
//代替了 SOCKADDR_IN
memset (&sab, 0, sizeof(sab));
sab.addressFamily  = AF_BTH;//这里
if (0 != bind (s, (SOCKADDR *) &sab, sizeof(sab))) {
wprintf (L"Socket bind, error %d\n", WSAGetLastError ());
closesocket (s);
return;
}
listen (s, 5);//监听
for ( ; ; ) {//死循环
SOCKADDR_BTH sab2;
int ilen = sizeof(sab2);
SOCKET s2 = accept (s, &sab2, &ilen);
if (s2 == INVALID_SOCKET) {
wprintf (L"Socket bind, error %d\n", WSAGetLastError ());
break;//防止界面锁死,退出循环
}
wprintf (L"Connection came from %04x%08x to channel %d\n",
GET_NAP(sab2.btAddr), GET_SAP(sab2.btAddr), sab2.port);//显示连接远程地址和端口
SpinConnectionThreadsOnSocket (s2);
}
closesocket (s);

看起来这个和winsock差不多,只是一些设备有些专用的语法?
那就是说以前做的产品,做下修改就可以用在WM上?
2009-5-11 12:25
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
真有些迫不及待了!
2009-5-11 12:27
0
游客
登录 | 注册 方可回帖
返回
//