下载本文示例代码
下载源代码
今天有幸在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)。
下载本文示例代码