wince下中文输入法

更新时间:2023-05-25 23:21:18 阅读: 评论:0

Windows CE下中文输入法编辑器简介
来源: 作者: 日期:2006-08-14
【聚杰网移动开发】Windows CE下中文输入法编辑器简介
CE包含了一种简体中文输入法编辑器,如果不想编写自己的输入法编辑器,那么可以直接调用默认的。在讲解中文输入法编辑器之前顺便提一下国际化(Internationalization),中文输入法及输入法编辑器只是国际化组件的一小部分。国际化是编写面向不同语言用户的软件过程中一个重要环节,CE的国际化组件包含很多小的组件,下表描述了组件的名称、功能:


  在定制内核的时候常会遇到这些组件,尤其是字体版本,选择不同的字体对于整个内核的大小影响很大。在定制内核的时候,选择PB提供的字体版本应该参照标题为“Font Versions”的帮助文档,在这个文档中详细的列举了东亚语言字体的文件名称、内容、正常大小和压缩大小。除了选择合适的字体版本外,还应该采用Agfa字体压缩技术Agfa字体压缩技术的优点是能够减小字体占用的ROMRAM空间,另外能够保证在压缩和解压缩后数据
不丢失。如果采用字体压缩,Agfa压缩技术将字体压缩成TrueType格式,并另存为扩展名为柜子英文“.ac3”的文件,那么CE在使用字体的时候首先寻找扩展名为“.ac3”的文件。如果不采用字体压缩,CE将使用非压缩字体,如扩展名为“.ttf”“.ttc”的文件。下面讲述关于简体中文输入法编辑器的相关知识。

  CE的输入法系统由下列几个部分组成:

  IME(输入法编辑器)内核。包括和用户输入的语言相关的内容,比如输入法、文字库等

  IME界面。包括状态窗口、写作窗口、候选窗口、指南窗口

  IMM(输入法管理器)。负责在CE系统、应用程序、IME之间通信

  输入上下文。包括用户输入状态等

  IME控制窗口。负责发送未处理的IME消息到IME

  输入法系统的工作机制如下:

  当输入法系统启动后,用户按键盘,键盘消息被IMM发送到IMEIME处理消息内容,根据键盘消息的内容或者产生用于写作的字符,或者产生命令。当IME处理键盘消息后,它发送通知消息到当前获得焦点的窗口,如果这个窗口不能处理IME通知消息,那么通知消息被发送到IME控制窗口,控制窗口将消息返回到IMEIMEro jack做默认的处理工作(IME提供了完整的用户接口)。对于能够处理IME通知消息的窗口,被称之为IME-aware窗口,相反不能处理IME通知消息的窗口,被成为IME-unaware窗口。能够处理IMEshiyang通知消息的窗口通过IMM 函数能够实现自定义的输入法编辑器。

  输入上下文:火星时代学费

  输入上下文存储了IME的状态信息,它是IME的内部结构。对于每一个线程,系统创建和
分配了一个默认的输入上下文,在线程内的每个窗口都共享输入上下文的内容。具体输入上下文的结构体定义包含在标题为“INPUTCONTEXT”的帮助文档中。从文档中看出,输入上下文包含对应窗口句柄、写作窗口和候选窗口和状态窗口的位置、字体、消息缓冲区等等。用函数ImmGetContext可以得到指定窗口对应的输入上下文的句柄。用ImmReleaContext释放指定的输入上下文。如果不希望一个线程内的窗口都共享同一个输入上下文,那么可以调用函数ImmCreateContext来创建一个新的上下文,并调用函数ImmAssociateContext将新创建的输入上下文与指定的窗口关联。当不用这个新创建的上下文时,调用ImmDestroyContext来释放内存。调用函数ImmLockIMC能够得到一个指定的输入上下文的指针,通过这个指针可以访问输入上下文的数据。访问结束后调用函数ImmUnlockIMCImmUnlockIMC减少计算锁数量,直到释放句柄。关于输入上下文的例子代码如下:


  下面是调用中文输入法的例子代码:
HIMC hIMC = ImmCreateContext(); ///创建新的上下文

LPINPUTCONTEXT lpIC;

lpIC = ImmLockIMC(hIMC);

.................... ///使用lpIC访问上下文数据continue的用法

ImmUnlockIMC(lpIC);

ImmAssociateContext(hWnd, hIMC); ///与窗口关联

ImmDestroyContext(hIMC); ///最后释放上下文

  下面是调用中文输入法的例子代码:
HIMC hIMC = ImmGetContext(hWnd); ///hWnd为当前窗口句柄

POINT pt;

pt.x = 300;

pt.y = 200;

ImmSetStatusWindowPos(hIMC, &pt); ///设置状态窗口位置

ImmSetOpenStatus(hIMC, TRUE); ///打开中文输入法

ImmReleaContext(hEdit, hIMC); ///最后释放上下文
我在开发过程中发现并非所有Imm函数都有效,通过对Pocket IME源码分析后证实了我的发现。但上述的函数都能够实现功能,对于只要能够打开并使用中文输入法的要求还是可以满足的。
加入中文输入法要对应中文版本.就是下面#el 后的东西了,特别是
[HKEY_CURRENT_USER\Keyboard Layout\Preload]
    @="00000409"
[HKEY_CURRENT_USER\Keyboard Layout\Preload\1]
    @="00000409"
上面两项就使用默认的就可以了.所以在中对应中文版本注册表就不要自己改这两项.
请参考如下注册表的设置.
学日语IF BSP_NOKEYPAD !
#if $(LOCALE)==0409
candysoft#define keybd_driver "mainstoneii_keypad_Us.dll"
; Report keypad HW prent and enabled, with Enter and ESC keys
; and alphanumeric keys.
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\KEYBD]
    "Status"=dword:0F
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Layouts\00000409]
    "BuiltInKeypad"="mainstoneii_keypad_Us.dll"
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Layouts\e0010409]
    "Keyboard Layout"="00000409"
[HKEY_CURRENT_USER\Software\Microsoft\Shell]
    "HasKeyboard"=dword:0
; Set the default layout preloads
; @BEGINASSOC LOCALE 0409
[HKEY_CURRENT_USER\Keyboard Layout\Preload]
    @="00000409"
[HKEY_CURRENT_USER\Keyboard Layout\Preload\1]
    @="00000409"
; @ENDASSOC
fashion jewelry#el
#define keybd_driver "mainstoneii_keypad_Us.dll"
; Report keypad HW prent and enabled, with Enter and ESC keys
; and alphanumeric keys.
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\KEYBD]
    "Status"=dword:0F
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Layouts\00000409]
    "BuiltInKeypad"="mainstoneii_keypad_Us.dll"
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Layouts\e0010409]
    "Keyboard Layout"="00000409"
[HKEY_CURRENT_USER\Software\Microsoft\Shell]
    "HasKeyboard"=dword:0
#endif
ENDIF BSP_NOKEYPAD !
IF BSP_NOKEYBD !
#include "$(DRIVERS_DIR)\"
#include "$(DRIVERS_DIR)\"
ENDIF BSP_NOKEYBD !
本文来自Tony嵌入式论坛,原文地址:/bbs/viewthread.php?tid=9226
wince 5.0 败军之将添加简体中文输入法 MSPY3 () (2008-02-21 10:12:48)
1.添加相应组件
GB18030 Data Converter                          SYSGEN_GB18030
MSPY 3.0 for Windows CE                          SYSGEN_MSPY3_SC
o Double Spelling (Shuang Pin) soft keyboard - Large  SYSGEN_SPIM_MSPY_LARGE  Option
o Double Spelling (Shuang Pin) soft keyboard - Small        SYSGEN_SPIM_MSPYOption
MSPY 3.0 for Windows CE Databa (Choo 1)
o 1.1 MB - Minimal Databa                    SYSGEN_MSPY3_DB_1
o 1.3 MB - Compact Databa                    SYSGEN_MSPY3_DB_3
o 1.7 MB - Standard Databa                   SYSGEN_MSPY3_DB_7
2.注册表
qafone org在 中加入
;
Simplified Chine Intelligent IME (MSPY3)
[HKEY_CURRENT_USER\Keyboard Layout\Preload\1]
 @="e0010804"
 
3.重新编译后即加入微软简体中文输入法3.0 MSPY3
相关信息参考PB5.0 help 文件。

本文发布于:2023-05-25 23:21:18,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/776582.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:输入法   字体   输入   消息   能够   编辑器   用户   内容
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图