Windows Mobile和Wince(Windows Embedded CE)下的WTL(Windows Template Library)开发

最近在做一个Windows Mobile的收音机程序,Tim  同学建议使用natvie C++做,所以打算使用WTL来开发。


在Windows Mobile和Wince下进行native C++开发,可以使用MFC,WTL以及Win32。比较流行的是MFC,网上资源也多,我自己也做了6,7年,可是使用MFC编译后的程序,体积比较大。因此这次考虑使用WTL,同时学习WTL在Windows Mobile和Wince下的开发。

下载安装

WTL project的地址: http://sourceforge.net/projects/wtl/
下载地址: http://sourceforge.net/project/showfiles.php?group_id=109071
如果使用2005可以使用WTL8.0。可是如果使用VS2008需要下载WTL8.1

下载完以后解压,例如我解压到C:\WTL\WTL81下面。

图1
AppWiz,AppWizCE和AppWizMobile三个文件夹分别为项目导向注册文件,下面会讲到。Include文件夹存放开发所需要的头文件,Samples存放例子项目的文件。CPL.TXT为lincense文件,readme.htm为release note。


项目导向注册

分别执行javasript文件注册项目导向。
Windows Mobile项目导向注册文件为
C:\WTL\WTL81\AppWizMobile\setup90.js
如果使用VS2005那么注册C:\WTL\WTL81\AppWizMobile\setup80.js


Wince的项目导向注册文件为
C:\WTL\WTL81\AppWizCE\setup90.js

PC项目的导向注册文件为
C:\WTL\WTL81\AppWiz\setup90.js,
如果为VS2008 Express版本,注册文件为C:\WTL\WTL81\AppWiz\setup90x.js


图2
注册完毕后,在新建项目向导中出现了WTL项目类型。

新建项目

 继续图2的新建项目向导

选择Windows Mobile 6 Professional 平台。

 

点击"Next"。

点击"Finish"。

拷贝C:\WTL\WTL81的Include文件夹到Mobile Radio项目下。

在Project->Properties->Configuration Properties->C/C++ ->General下配置"Additional Include Directories",增加"Include"文件夹。

再次编译,发现MobileRadioppc.rc文件第十行出错,提示找不到atlresce.h文件。尽管配置了"Additional Include Directories",可是资源文件还是找不到该文件,修改代码如下:

#include "Include/atlresce.h"

编译生成成功,运行如下图。

另外一个解决资源文件方法是配置资源文件包含文件的路径,增加Include文件夹,如下图:

 

到此为止,一个WTL程序建立成功了。

 

关于Mobile Radio - Internet Radio Software for Windows Mobile项目

 

目前(2009年9月份)这个项目基本功能已经完成,只是界面方面需要改进,提高用户体验。我把项目host到Mobile Radio - Internet Radio Software for Windows Mobile了,我会持续改进,主要是提高用户体验方面。

需要了解项目最新动态,可以访问Mobile Radio - Internet Radio Software for Windows Mobile 和我的Blog 精简开发 无线生活

 

源代码: 查看Mobile Radio最新源代码

环境:VS2008 + WM 6 professional SDK + WTL 8.1 + TinyXML

 

作者:Jake LinJake's Blog on 博客园
出处:http://procoder.cnblogs.com

作品Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言
posted @ 2009-06-03 10:18 Jake Lin 阅读(4830) 评论(30) 编辑 收藏

 回复 引用 查看   
#1楼 2009-06-03 08:40 无常      
你是打算做网络收音机还是调用 手机上的FM功能?
 回复 引用 查看   
#2楼 2009-06-03 08:41 peterzb      
不错,正想了解WM下WTL开发,谢谢lz分享
 回复 引用   
#3楼 2009-06-03 08:48 Tim.Lu[未注册用户]
WTL作为微软支持的非官方的应用开发组件,完全没有详细的资料介绍,感谢jake通过入门式的文档内容对WTL的开发经验进行整理。期盼更深层次的相关文档内容。
 回复 引用 查看   
#4楼 2009-06-03 08:50 Haozes      
WTL很不错,就是资料好少....
 回复 引用 查看   
#5楼 2009-06-03 09:18 AppleSeeker      
哦..不错...
 回复 引用 查看   
#6楼 2009-06-03 09:38 kyt      
不错,不知和mfc相比wtl的开发难度或工作量会不会大很多。
 回复 引用 查看   
#7楼 2009-06-03 10:44 andy.wu      
wtl有8.1吗?什么时候出来的,上个月的时候,我在用Wtl时还只看到8.0, 有些地方还需要手工调整一下。

wtl相当的不错,只是文档真的太少了。我对比了sdk,wtl,mfc。wtl更接近sdk的方式,而mfc封装的太历害了。不过话说回来,正是因为封装的多,又是官方支持,用mfc开发的效率还是最高的,

 回复 引用 查看   
#8楼[楼主] 2009-06-03 11:18 Jake.NET      
@无常
网络的。

 回复 引用 查看   
#9楼[楼主] 2009-06-03 11:19 Jake.NET      
@peterzb
@Tim.Lu
@Haozes
@AppleSeeker
谢谢。随着这个程序的开发,后面会写些深入些的内容。

 回复 引用 查看   
#10楼 2009-06-03 11:19 黎波      
支持!
 回复 引用 查看   
#11楼[楼主] 2009-06-03 11:21 Jake.NET      
@kyt
其实我就是打算用WTL做UI,我做MFC的时候,非系统相关部分全部用STL的。在资料方面WTL比MFC还是少很多,所以上手应该难些。我会后续分享更多这些经验,因为对于WTL,我也是入门级。

 回复 引用 查看   
#12楼[楼主] 2009-06-03 11:24 Jake.NET      
@andy.wu
8.1的下载链接在文章中有。

我用WTL而不是win32的目的就是WTL对UI做了不少封装,同时没有MFC那样庞大。

MFC应该开发效率最高,资料多,很多共享代码。可是编译后的文件size,MFC确实太大了。

 回复 引用 查看   
#13楼[楼主] 2009-06-03 11:24 Jake.NET      
@黎波
谢谢!

 回复 引用 查看   
#14楼 2009-06-03 12:33 施炯      
支持!
貌似在SDK自带的例子中有些WTL的工程。

 回复 引用 查看   
#15楼 2009-06-03 16:58 张善民      
WTL 8.1我已经等了很久很久了.
 回复 引用 查看   
#16楼[楼主] 2009-06-03 17:16 Jake.NET      
@施炯
谢谢,我要去学一下。

 回复 引用 查看   
#17楼[楼主] 2009-06-03 17:18 Jake.NET      
@张善民
从下面官方的release note看好像更新不多。


Release Name: WTL 8.1.9127

Notes:
Initial update for WTL 8.1
--------------------------------------------------------------------------------
Changes:
- changed version number
- updated CPL link in headers
- fixed warning for _vstprintf
- added wizard setup programs for VS2008

 回复 引用   
#18楼 2009-06-05 10:28 z0011139-jk[未注册用户]
刚试了一下,#include "Include/atlresce.h"修改后还是报错,
fatal error RC1015: cannot open include file 'include/atlresce.h'.
大虾们指点一下!


 回复 引用 查看   
#19楼[楼主] 2009-06-05 11:28 Jake.NET      
@z0011139-jk
请问你是不是没有拷贝C:\WTL\WTL81的Include文件夹到Mobile Radio项目下?

 回复 引用 查看   
#20楼[楼主] 2009-06-12 06:47 Jake.NET      
@z0011139-jk
文件更新,可以通过配置解决这个问题。

 回复 引用 查看   
#21楼 2009-07-07 19:26 Wesley Wang      
为什么我的vs2008使用8.1的包之后,只能创建windows程序而不能创建wm和ce的项目呢?
 回复 引用 查看   
#22楼[楼主] 2009-07-08 18:24 Jake.NET      
@Wesley Wang
你试一下其他VS,或者重装VS,我也碰到过,也一直没有时间解决,这个问题需要对addon进行调试。

 回复 引用   
#23楼 2009-11-09 20:41 Jaker[未注册用户]
vs2008使用8.1的包之后,只能创建windows程序而不能创建wm和ce的项目,我发现是html有问题,有谁改好的.
 回复 引用 查看   
#24楼[楼主] 2009-11-10 05:39 Jake Lin      
@Jaker
我其中一台机器也有这个问题,一直没有解决。

留抓啊

 回复 引用 查看   
#26楼 2010-03-18 14:47 梦书      
再次编译,发现MobileRadioppc.rc文件第十行出错,提示找不到atlresce.h文件。尽管配置了"Additional Include Directories",可是资源文件还是找不到该文件,修改代码如下:

#include "Include/atlresce.h"


正确的方法是:
在工程属性中的Resource->General->Additional Include Directories",中添加WTL的Inlcude 路径

 回复 引用 查看   
#27楼[楼主] 2010-03-18 15:05 Jake Lin      
@梦书
Thanks for pointing it out. I had updated same method in my article couple months ago. I think there is same approach as you do.

Thanks again.

 回复 引用 查看   
#28楼 2010-07-24 14:19 sony xue      
22楼@Wesley Wang和我遇到同样的问题。不知道你用的是什么版本vs开发的,我用的是vs teamSystem 2008,只能创建windows程序而不能创建wm和wince的项目

 回复 引用 查看   
#29楼[楼主] 2010-08-30 06:13 Jake Lin      
@sony xue
我也碰到这个问题,重装了VS2008才解决了。没找到简易解决方法。

 回复 引用 查看   
#30楼 2010-10-27 00:47 lanru      
能介绍一些用MFC开发mobile的书籍吗?谢谢