也论 Embedded Visual C++

  • 来源: 互联网 作者: rocket   2008-03-18/13:24
  • 今天有幸在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)。

    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多