【转】WinCE5.0 Platform builder 中实现中文手写 [WINCE 学习笔记]
经过几天的折腾,终于给WINCE 5.0上装上了手写输入法,总结一下。过程其实比较简单,可以是因为刚开始接触 PB,遇到任何困难都要费点时间去解决。
概述WINCE上手写可以有两种方法实现,一是使用IME的输入法,另一种是单独开发一应用程序,来完成按键到字符的转换。两个工作原理如下:
IME
图表1
绿色输入法
图表2
至于利弊就不分析了,各有所好,我觉得如果你提供系统给别人用,最好选后者。所心就尝试如何把它做到系统中去。
开始添加之前,先要有一个能生成NK.BIN的工程,可以是开发板商提供的,也可以是你自己创建的,总之要保证能正常编译,而且运行正常。
集成输入法选择你要集成的输入法,现在能作用的应该比较多,但是我试了好几个没成功,最先试成功的是捷通手写输入法, 其它的成功了再说, 可以在此下载:
先下载吧:http://www.fs2you.com/files/735ef26b-1046-11dd-b2bd-0014221f3995/
接下来需要完成两个步骤
1. 设置将输入法的文件拷到要生成的IMAGE中
2. 将注册表需要修改的文件导入进去
打开PB工程,ParameterView->下面会有两个选项,一个是Common Files , 另一个是你的工程设置。两个中有部分文件是重名的,但作用域不一样。确切地说是作用范围不同。Common Files会作用所有的PB工程,下面的作用域小一点。 我用得是2440的板子,工程名为"mini2440", 打开后还会有两个,一个 Hardware specific Files 和 Project Specific Files , 这里文件名不重名,但后缀名相同,也是同理,作用域不同,前者作用同一硬件工程的设置,后者是特写该工程的设置。 所以,我认识,只是单独你一个工程的设置,尽量放在这里修改。但是需要明白的是,如果你在project 设置中能完成的工作,如果你修改了前面两个,也一定能实现同样的功能,只是你再新建工程的时候也生效了。所以根据你的需要选择你要修改的文件。
手写输入法我目前只想在这个版本上实现,所以选择在project中去修改。
将下载后得到的文件拷贝到 Release对应的目录下 *_* _Release 对应的release目录。
放在那位置倒没有明显规定,但至少要是一个环境变量指向的目录中。 我使用用的是 _FLATRELEASEDIR,对应目录为
X:\WINCE500\PBWorkspaces\mini2440\RelDir\mini2440_ARMV4I_Release
如果你还不确认自己应该在那个目录里, 使用以下步骤确认:
打开 CMD窗口,
图表3
输入 echo % _FLATRELEASEDIR%
图表4
看到的就是你的路径了。
把下载的文件拷贝进去(包含JT.reg文件), 注,这里拷贝并不会直接生成在IMAGE中,需要设置
图表5
打开porject.bib 输入右边红色圈里的东西
porject.bib中记录格式为
表格1
目标文件名
源文件路径+文件名
存储位置
存储类型
详细的介绍大家可以查阅 Files 文件设置格式
图表6
到此,编译系统的时候,会把这四个文件拷贝到目标系统的 /windows下
下来再导入注册表:同样,打开 project.reg 文件, 在最后一行添加以下语句
图表7
好了,设置完成, 然后 ->Sysgen。
将生成后的nk.bin下载到目标系统中,享受全屏输入法吧
图表8
图表9
问题最后,有个问题是: 生成系统的时候,报警告:
regcomp: Overwriting existing value [HKEY_CURRENT_USER\Keyboard Layout\Preload\1] "Default" in system registry
regcomp: WARNING, syntax error on or near line 6515 of reginit.ini; line skipped.
我查了一下,这是最后生成的 reginit.ini 文件中的错误,reginit.ini文件资料上说是由 common.reg, project.reg, platform.reg 合并后生成的。其错误源为:
# Hot Key Alt + F1 For direct switch
# IME_HOTKEY_DSWITCH_FIRST
[HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\00000100]
"VK"=dword:70
"KM"=dword:C001
"Ime"=dword:e0010804
我想是不是"#" 在这里格式不对,本来应该是注释用得,可是找了半天也不知道这项是从那生成的。最后我猜想应该是选择WINCE组件时的内容,可是如何消除这 Warning, 有知道的前辈请指点。
声明: 因为也是刚开始接触WINCE 和Platform builder ,总结中有不妥的地方,欢迎大家指正,另,有误导的地方,大家见谅。