??xml version="1.0" encoding="utf-8" standalone="yes"?>国产成人无码精品久久久性色,亚洲国产精品久久久天堂
,浪潮AV色综合久久天堂http://www.shnenglu.com/MichaelLiu/category/5820.htmlTechnology changes the world, serves the people.zh-cnThu, 22 May 2008 15:36:10 GMTThu, 22 May 2008 15:36:10 GMT60qWin CE开发特性及(qing)忠告[转帖]http://www.shnenglu.com/MichaelLiu/articles/38874.html奔跑的阿?/dc:creator>奔跑的阿?/author>Tue, 18 Dec 2007 06:00:00 GMThttp://www.shnenglu.com/MichaelLiu/articles/38874.htmlhttp://www.shnenglu.com/MichaelLiu/comments/38874.htmlhttp://www.shnenglu.com/MichaelLiu/articles/38874.html#Feedback0http://www.shnenglu.com/MichaelLiu/comments/commentRss/38874.htmlhttp://www.shnenglu.com/MichaelLiu/services/trackbacks/38874.htmlqWin CE开发特性及(qing)忠告[转帖] Tuesday, December 18, 2007
注:(x)转脓(chung)文章Q版权归原作者所有?br> 最q一D|_(d)Ud讑֤开发越来越多的成ؓ(f)?jin)程序员C的话题。移动设备主要包括智能手机和PDAQ是嵌入式开发中很重要的一个方向。在手机领域被大多数手机厂商支持的J2ME无疑是领头羊Q微软CEq_的SmartPhone也逐渐成ؓ(f)x(chng)焦点。一直不温不火的PDA?jng)场Q也在行业应用领域有所收获QPocket PC׃其开发与Windowsq_的一致性而得C(jin)开发h员的青睐?nbsp; 在长期关注程序员论坛的过E中Q我发现׃Windows CE开发的独特性,加之多个版本q存、缺乏中文参考资料,所以论坛上充斥着大量相同的入门问题。我希望在这里能够ؓ(f)刚{入Windows CE开发的E序员明C些概念,现有的Windows CE版本与开发工具之间的关系l大家解释清楚?br> 1. Windows CE与^台开?br> Windows CE是微软ؓ(f)嵌入式设备打造的操作pȝQ而嵌入式讑֤可谓多种多样Q这p求CE操作pȝ必须是可定制的,所以微软将Windows CE设计为模块化的操作系l。说单点Q我们可以把Windows CE惛_成一盒积木,你可以用U木搭徏ZQ何物体,但不一定要把所有的U木都用上?br> Windows CE搭徏出来的物体就是^収ͼ是适应某种有固定标准的嵌入式设备的操作pȝ子集Q最著名的^台就是Pocket PC?jin),是提供给没有键盘的掌上?sh)脑用的q_。由于^台和g的一致性,所以有时候我们也用^台的名称来称呼整个系l——硬件与操作pȝ的d?br> 我们也可以自己开发^収ͼ开发工h微Y提供的Platform BuilderQPlatform Builder的版本号是和W(xu)indows CE的版本号一致的?br> 更多E序员关?j)的是应用程序的开发,而应用程序开发是针对特定q_的,我们在开发之前必d装目标^台的SDKQ才能够开发出适应目标q_的开发工兗?br> Windows CE开发环境综q?br> 初学者另外一个比较糊涂的概念是版本的问题Q现在市(jng)面上能够见到Windows CE的两代品,它们的内核分别基于Windows CE 3.0和W(xu)indows CE.NETQ即4.0Q?br> 微Y今q刚面世的Pocket PC 2003和Smart Phone 2003l称为Windows Mobile 2003Q我们大多数时候还是习(fn)惯地沿用老称谓?br> 而市(jng)面上l常见到的Pocket PC 2002是基于Windows CE 3.0的^収ͼ而Pocket PC 2003则是ZWindows CE.NET的^収ͼ需要注意的是,Pocket PC 2003的内核是Windows CE.NET 4.2。而SmartPhone2003也是ZWindows CE.NET的。SmartPhone的最初版本是2002Q基于Windows CE 3.0的,但是微Y没有推出SmartPhone2002的中文版?br> 清晰?jin)^CCE之间的关p,解释q_与开发工具之间的关系很Ҏ(gu)?jin)。微软提供给应用E序开发者的工具包括QEmbedded Visual Tools 3.0Q其中包括Embedded Visual C++ 3.0和Embedded Visual Basic 3.0QEmbedded Visual C++ 4.0和Visual Studio.NET?br> 开发工L(fng)版本h与Windows CE的版本号对应的。EVC3.0和EVB3.0是用来开发基于Windows CE 3.0q_的应用程序的Q比较常见的q_有:(x)Pocket PC 2002、Pocket PC 2000、Palm-size PC、HPC。而EVC4.0是用来开发Windows CE.NETq_的程序的Q主要包括Pocket PC 2003和SmartPhone 2003?br> Visual Studio.NET针对嵌入式设备开发需要SDE的支持,而VS.NET 2003中包括了(jin)SDEQ不需要另外安装。Visual Studio.NET开发的E序需要目标^台支?NET Compact Framework。现在支?NET Compact Framework的^台有Pocket PC 2002和Pocket PC 2003。这里需要注意的是SmartPhone 2003是不支持.NET Compact Framework的?br>2. EVB/EVC开发入?br> EVB开发入?br> 微Y已经宣布EVB不再支持Windows CE.NETQ所以EVB的最l版本是3.0。但׃EVB的易上手性和快速开发的特点Q在VS.NET横空Z之前Q它成ؓ(f)Windows CEq_上快速开发的不二之选。现在EVB仍然适合Windows CE 3.0q_上小型应用程序的快速开发。如果?zhn)不是专职的Windows CEE序员,而只是需要在Windows CEq_上开发整个系l的一部分Q那么EVB可以让?zhn)用很短的旉开发出(zhn)想要的E序?br> EVB的开发环境的搭徏也是十分单,(zhn)可以从微Y的网站上下蝲EVT 2002Q其中包含了(jin)EVC 3.0、EVB 3.0和Pocket PC 2002 SDK和SmartPhone 2002 SDK。按照提C将EVB和Pocket PC 2002 SDK安装好后可以进行开发了(jin)。SDK中包含模拟器Q在没有实际讑֤的情况下Q可以利用模拟器来调试程序?br> q里需要注意的是,开发环境和模拟器之间是通过|络q接协议q行通讯的,所以开发所用的计算Z必须有一个活动的|络q接。如果没有,可以安装微Y的虚拟网卡?br>
EVB的开发环境与VBcMQ因为Windows CE应用E序需要在模拟器或者实际设备上调试Q所以我们必选择E序的输出目标。如果?zhn)选择?jin)EmulationQ在(zhn)按下运行(或F5Q后QEVB自动启动模拟器Qƈ把程序下载到模拟器中?br> ׃新的Windows CE.NET不再支持EVBQ微软徏议EVBE序员(sh)用VB.NET开发新的程序,而对于原有的EVBE序也给Z(jin)q移路径Q关于这斚w的论qͼ(zhn)可以参考MSDN文章《Moving from eMbedded Visual Basic to Visual Basic .NET》?br> EVC开发入?br> 无论是Win32q_q是WinCEq_QVisual C++都是一个强大的开发工兗而EVC也是WinCE上的L开发工兗EVC支持MFCcd的子集,可以l开发者提供最强大的支持,也Win32q_上的VCE序员可以很Ҏ(gu)地迁UdWinCEq_上。但׃MFCcd需要一个DLLQ所以对某些存储I间有限的嵌入式讑֤来说Q这是个很大的负担,所以SmartPhone׃支持MFC?br>
说这么多Q让我们来创Z个EVC的工E。是不是和VC很像Q需要提醒大家注意的是,׃嵌入式设备支持的CPUU类很多Q我们在选择创徏工程cd的同Ӟ也要把该工程所支持的CPUcd选择好。创建工E的q程和VC是一L(fng)。当然不同的q_支持的工E类型是不同的,比如Pocket PC 2003有支持MFC和API的两U工E,而SmartPhone 2003则只有支持API的一U工E?br>
/* MultiByteToWideChar () and WideCharToMultiByte() not supported o-n Windows CE 1.0 */ int atow(char *strA, wchar_t *strW, int lenW); int wtoa(wchar_t *strW, char *strA, int lenA);
endif /* _WIN32_WCE >= 101*/
#if (_WIN32_WCE <101)
int atow(char *strA, wchar_t *strW, int lenW) { int len; char *pA; wchar_t *pW;
/* Start with len=1, not len=0, as string length returned must include null terminator, as in MultiByteToWideChar() */ for(pA=strA, pW=strW, len=1; lenW; pA++, pW++, lenW--, len++) { *pW = (lenW = =1) ? 0 : (wchar_t)( *pA); if( ! (*pW)) break; } return len; }
int wtoa(wxhar_t *strW, char *strA, int lenA) { int len; char *pA; wchar_t *pW; /* Start with len=1,not len=0, as string length returned Must include null terminator, as in WideCharToMultiByte() */ for(pA=strA, pW=strW, len=1; lenA; pa++, pW++, lenA--, len++) { pA = (len==1)? 0 : (char)(pW); if(!(*pA)) break; } return len; }
#endif /*_WIN32_WCE<101*/
q种适合于Windows CE 1.0的实现办法比使用wsprintf()函数要容易,因ؓ(f)使用wsprintf()函数更难以限制目标指针所指向的字W串的长度?br>6. Win CE 开发忠?nbsp;[3]