这个又是很早的东西了,呵呵,也许有人会用的着吧!
输入法编辑器篇
输入法编辑器(IME)是允许用户使用标准键盘输入复杂字母与符号,如日文汉字的程式。本文描述创建及管理IME(input method editor)视窗的方法。
1、输入法编辑器简介
IME 不是检索用户可能用到的所字符值,而是监控用户的按键,来预料用户可能需要的字符,并提供一张备择字符列表以供用户从中选出所需字符。
默认情况下,IME为用户提供一个可以键入并选择备择字符的IME视窗。通过使用IME变换功能提供的定制接口,Win32程式可以利用输入法管理器 (Input method manager),IMM,函式和消息创建自己的IME视窗。
IMM仅在远东地区的Windows95/98和WindowsNT4.0/3.5/平台上可被激活。在这些系统上用SM_DBCSENABLED调用GetSystemMetrics来判定IMM是否被激活。WINDOWS2000为所有地区的语言均提供全部特征的IME支持。然而须注意,仅当安装了亚洲语言包时,IMM方可被激活,一个可激活IMM的程序用SM_IMMENABLED调用GetSystemMetrics来决定当前IMM是否活动。
1.1 状态、录字和备择视窗
用户接口为IME提供状态、录字和备择视窗。状态视窗指示IME被打开,并向用户提供设置转换模式的方法;在用户输入文本时,录字视窗弹出来,依赖转换模式显示输入文本或转换后的文本。备择视窗同录字视窗也一同出现,包含待选的备择字符或录字视窗中的字符,用户可以滚动备择列表来选择所需的字符,然后返回至录字视窗。用户可用此方法录入所需文本,直至录入字符串结束且视窗关闭。以WM_IME_CHAR或WM_IME_COMPOSITION/GCS_RESULT消息的形式,IME向程式送入录入字符。若程序不处理这些消息,DefWindowProc函式将它们转译成一个或多个WM_CHAR消息。
默认时,系统自动地为所有需要文本输入的视窗创建和管理状态、录字及备择视窗。对许多程式而言,这一默认处理是高效的。这些程式完全依赖于系统对IME的支持并被称为“无觉察IME”( IME-unaware)。这是因为他们忽略许多系统管理IME视窗的任务。
相对应,一个“IME察觉”(IME-aware)程序,必参与IME视窗的创建与管理工作。此类程序通过传递、截取和处理送往默认视窗的消息,来控制视窗的操作、位置以及外观。在有些情况下,程序可以创建自己的IME视窗,并对自己定制的状态、录字和备择视窗提供完整处理方法。
1.2 IME视窗类
"IME" 视窗类是预定义的定义标准IME视窗行为和外观系统全局类。视窗类与通用控件类相似,在该类中,可以用CreateWindowEx函数创建该类的视窗,如同静态控件IME视窗不自身响应用户输入,相反,它通知用户输入行为IME和用IME或响应用户行为的程式给它传送进程控制消息。
IME-aware 程序有时用IME类创建自己的IME视窗。这就允许程序利用默认的IME视窗进程以及视窗位置控件。
1.3 I