也论 Embedded Visual C++

王朝vc·作者佚名  2006-01-17
宽屏版  字体: |||超大  

也论 Embedded Visual C++

作者:flybug_zgj

下载源代码

今天有幸在VCKBASE看到付林林君写的《初识 Embedded Visual C++》一文,我也因为工作原因接触Embedded Visual C++有些时间了,今天,也来谈谈我的一些经验,望高手指点。

一、书籍推荐

对于想要作些WinCE程序的人来说,推荐书籍《Programming Windows CE》,由 北京博彦科技发展有限公司翻译,北京大学出版社出版。这本书详细地解说了 WinCE 的内容,不过,遗憾的是,它是基于API,而不是基于MFC的,所以正如付林林君所言,如果不了解些 Windows 内核读起来会有点困难。

不过,熟悉VC6的诸君大可放心,完全可以像使用VC6那样来使用 Embedded Visual

C++,你可以建立一个单文档程序来试试看,一切都很顺手。要注意的就是UNICODE,这点付林林君也说到了,你写字符串时不能 CString

strTest="ABC";而应该为:CString strTest=_T("ABC");

二、关于 Embedded Visual C++ 版本

微软现在将版本升级到了4.0和SP2,可是在实际工作中我一直都在使用3.0,全名叫"Microsoft eMbedded Visual

Tools version 3.0",注意,4.0只是eMbedded Visual C++

4.0而不是一个工具集。付林林君用的软件是公司买的,其实,4.0大家可以在微软的主页上自由地下载使用,呵呵,微软真是伟大,他们连软件的注册码都提供了(微软的这种做法是醉翁之意不在酒,大概是在乎Palm那里)!一个坏消息是微软停止了3.0的下载,现在只有4.0了。大家要去微软英文版主页寻找,在中文版主页里找不到的。

对了,为什么我要使用3.0而不是4.0呢?这是因为SDK的缘故,3.0版除了eMbedded Visual Tools version

3.0本身外(包含VC3.0和VB3.0)还带了3个SDK,分别是PalmSize PC、Hand PC和Pocket

PC,微软原来提供了一个下载的压缩包,解开后是两张光盘的内容,Disk1是开发工具,Disk2是3个SDK。而4.0自带了一个仅一个SDK,是WinCE.net,由此可见,大家想要开发某种机型的程序就需要安装那种机型的SDK,恰巧,我有PalmSize

PC、Hand PC和Pocket PC,却没有基于WinCE.net的掌上电脑,所以只好看着VC4.0暗暗吞口水,呜呼,钞票啊,为之奈何。

三、关于模拟器

安装SDK后,运行eMbedded Visual C++,可以看到它为每种机型都设立了相对应的模拟器。eMbedded Visual Tools

version 3.0如下图所示:

如果你使用的是Pocket PC,你可以在机型里面选择"Pocket

PC",而CPU类型你可以在掌上电脑的"系统"信息里面查询,不能乱选,不然,编译的程序不能运行,我的是ARM,可以看到有个"x86em"类型,选择那个的话,开发环境会自动启动模拟器,在PC机上建立一个目录来运行你的程序。而当你写好程序了,想要移植到其他机型上时,也很简单,不用重新编写程序而只要更改"机型"和CPU类型再编译即可,方便吧,应该感谢微软。对了,如果你使用的是真正的Pocket

PC的话,你应该先将Pocket PC和PC机连接上,一般随着Pocket

PC买来的时候,厂家会提供与电脑连接的软硬件,你可以去微软的主页下载连接软件Microsoft ActiveSync

3.7.1,不过,这个新版本不能与PalmSize PC连接,而要使用早期的WinCE Server,好像是2.2版。

编译WinCE步骤为:连接掌上电脑与PC-打开eMbedded Visual

C++-编译-开发环境自动下载程序到掌上电脑-去掌上电脑上运行你的程序。

下面,我来演示一断在单文档程序里面显示中文的代码。

1、建立一个单文档程序,选择WCE MFC AppWizard (exe)-在Step 1 of 4 中,What

Language…项如果显示为空,就让他去好了,不要更改-选择Finish结束。然后你可以在菜单Project-Settings…里面选择Resources,察看Language是否为"中文",如下图所示:

不是的话,可以改过来,是的话,单击Cancel即可。

2、在View的OnDraw中,加入下面代码:

void CMy123View::OnDraw(CDC* pDC)

{

CMy123Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

//显示中文:

RECT rect;

rect.top=0;rect.left=0;rect.right=400;rect.bottom=rect.top+15;

CString StrTmp=_T("中国");

pDC-DrawText(StrTmp,&rect,DT_LEFT|DT_SINGLELINE);

}

注意,这里不是使用VC6.0里面的TextOut()函数,而是DrawText(),原因大家参考我推荐的那本书。

3、编译,注意CPU选择,然后编译完成后就会自动下载到掌上电脑里面,哦,对了,我的Poceket PC的操作系统是 Microsoft

Poceket PC 2002

中文版,如果操作系统是英文版的,那么需要安装外挂字库,就像当年在Windows95上普遍使用的中文之星一样,否则乱码。如果你的程序不能自动下载,你也可以先编译,完成后拷贝到掌上电脑里面里面运行。

4、在模拟器上运行程序是很好的,因为只有这样你才能运行在Debug模式下并跟踪运行,如果使用的是真正的掌上电脑,呵呵,只好看结果来猜问题。但是有时非要这样不可,比如,你编写了一个串口程序,当你运行模拟器时,应该会得到错误报告。

四、一些问题

eMbedded Visual C++使用起来很顺手,但是不要想当然地按照VC6那样来使用,因为,这里提供的MFC是PC版的MFC的一个子集,很多东西能够在PC上运行但CE不支持,安装了Microsoft

eMbedded Visual Tools version 3.0后,它提供的帮助可以随时按下F1来求助,大家有问题多看看。

付林林君提到的 Platform builder,我没有见过,好像功能很牛啊,各位大侠,有这方面的知识的还请指教,谢谢。

WinCE

程序与PC程序在系统里的运行不太相同,很多时候,单击WinCE程序右上角的X不是将其关闭,而是将它切换到后台,当你用WinCE系统自带的进程察看器察看时,就会发现它在那里占着资源呢,要关闭它,应该选择

菜单-退出,微软这么做,是WinCE系统设计本身带来的,不是坏事,但大家要知道有这么一回事。

随文章附上一个压缩包,里面包含两个小程序,两个程序都是Poeckt PC下面的,大家可以自行更改其操作系统平台,其中:

123——演示了在客户区显示中文,单击 菜单-退出 来结束程序。

ColorT——演示了简单的画圆和中文菜单。单击 右上角X 不能关闭程序,要去WinCE系统自带的进程察看器里面关闭。

程序内容不多,演示耳。

欢迎高手指教,小生Email: skysoft_z@sina.com.cn

另:

小生另外一篇文章《在Visual C++6.0中使用Text-to-Speech》中:

"1、如何调节语调。声音之所以有Mary和Sam的

区别,实际上是语调不同。"这种说法是不对的,声音之所以有Mary和Sam的区别不单是语调不同的问题,而是Mary和Sam有根本性的不同,虽然也可以调节语调。

"3、如何把 Windows 上的 TTS 移植到 PocketPC 上面。"就是我在研究eMbedded Visual

Tools时发现的问题,现在还没有解决,还请有道之士指导。

让我们一同鄙视那些"吸血鬼"(有能力但是从来不上传的,只是一味吸取精华的ren)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有