IME输入法编程: 第二章 Windows9x系统提供的ime管理函数
上一章,我们介绍了ime文件中必须设计的函数,这些函数要靠我们自己来设计。要完成这些函数的设计,
需用到windows 系统提供的管理函数(Input Method Manager,简称IMM)。
IMM函数可以被IME函数使用,也可用于应用软件直接管理IME。
相关术语:
(1)input method context 简称IMC--输入法相关部分,在这里解释为:相关连的应用程序(进程)
(2)component of the input context 简称IMCC--IMC的部件,是INPUTCONTEXT 结构的成员。
一、IME中使用的IMM函数清单
ImmGetCompositionWindow //取编码窗口信息 ImmSetCompositionWindow //设置编码窗口信息 ImmGetCandidateWindow //取选择窗口信息 ImmSetCandidateWindow //设置选择窗口信息 ImmGetCompositionString //取编码窗口的某一信息 ImmSetCompositionString //设置编码窗口的某一信息 ImmGetCompositionFont //取编码字体 ImmSetCompositionFont //设置编码字体 ImmGetNumCandidateList //取选择区中编码数 ImmGetCandidateList //取选择区中编码 ImmGetGuideLine ImmGetConversionStatus //取当前输入法的状态(ACSII,SHAPE,FULL等) ImmGetConversionList //重新获得选择区转换表 ImmGetOpenStatus //取输入法打开属性 ImmSetConversionStatus //设置输入法状态 ImmSetOpenStatus //设置输入法打开状态 ImmNotifyIME //通报IME,输入法状态被改变 ImmGenerateMessage //将我们的汉字串法发送到与当前输入法相关联的应用软件中 ImmRequestMessage //向应用程序发送WM_IME_REQUEST ImmLockIMC //获取当前IMC的INPUTCONTEXT结构信息,增加IMC 计数器 ImmUnlockIMC //释放IMC计数器 ImmGetIMCLockCount //取计数器值 ImmCreateIMCC //创建INPUTCONTEXT结构的一个成员 ImmDestroyIMCC //删除IMC成员缓冲区 ImmLockIMCC //取IMCC缓冲地址,同时使IMCC的计数器值增加 ImmUnlockIMCC //递减IMCC计数器 ImmReSizeIMCC //重新设置IMC的成员的缓冲区大小 ImmGetIMCCSize //取IMC成员的缓冲区大小 ImmGetIMCCLockCount //返回IMC计数器值 ImmGetHotKey //取输入法状态键,该函数供控制面板使用 ImmSetHotKey //设置输入法的热键 ImmCreateSoftKeyboard //产生一个软键盘 ImmDestroySoftKeyboard //销毁软键盘 ImmShowSoftKeyboard //显示或隐藏软键盘
1、BOOL WINAPI ImmGenerateMessage( //将我们的汉字串法发送到与当前输入法相关联的应用软件中 HIMC hIMC //与当前输入法相关联的应用软件的句柄, //该结构的hMsgBuf项即为汉字串消息 ) 成功为TRUE,否则为FALSE 2、LRESULT WINAPI ImmRequestMessage( //向应用程序发送WM_IME_REQUEST //只是用于w98及w2000 HIMC hIMC, //与当前输入法相关联的应用软件的句柄 WPARAM wParam, //与WM_IME_REQUEST相关的wP LPARAM lParam //与WM_IME_REQUEST相关的LP //=IMR_COMPOSITIONWINOW //=IMR_CANDIDATEWINDOW //=IMR_COMPOSITIONFONT //=IMR_RECONVERTSTRING //=IMR_CONFIRMRECONVERTSTRING //=IMR_QUERYCHARPOSITION //=IMR_DOCUMENTFEED ) 3、LPINPUTCONTEXT WINAPI ImmLockIMC( //获取当前IMC的INPUTCONTEXT结构信息,增加IMC 计数器 HIMC hIMC //当前应用程序句柄 ) 成功返回INPUTCONTEXT 结构指针,否则为NULL 4、BOOL WINAPI ImmUnlockIMC( //释放IMC计数器 HIMC hIMC //当前应用程序句柄 ) 返回:如果IMC计数器被减少到0了,返回FALSE,否则为TRUE. 注意:ImmLockIMC与ImmUnlockIMC必须成对出现,必须是相同的HIMC 5、HIMCC WINAPI ImmGetIMCLockCount( //取计数器值 HIMC hIMC //当前应用程序句柄 ) 如果成功返回HIMC的计数器值,否则为NULL. 6、HIMCC WINAPI ImmCreateIMCC( //创建INPUTCONTEXT结构的一个成员 DWORD dwSize //成员的缓冲区长度 ) 如果成功返回IMC的成员句柄,否则为NULL 7、HIMCC WINAPI ImmDestroyIMCC( //删除IMC成员缓冲区 HIMCC hIMCC //被删除的IMC的成员 ) 如果成功返回NULL,否则等于该HIMCC. 8、LPVOID WINAPI ImmLockIMCC( //取IMCC缓冲地址,同时使IMCC的计数器值增加 HIMCC hIMCC //IMC成员句柄 ) If the function is successful, the return value is the pointer for the IMC component. Otherwise, the return value is NULL. 9、BOOL WINAPI ImmUnlockIMCC( //递减IMCC计数器 HIMCC hIMCC //IMC成员句柄 ) 如果IMCC的计数器值为零,则返回 FALSE,否则为TRUE. 10、HIMCC WINAPI ImmReSizeIMCC( //重新设置IMC的成员的缓冲区大小 HIMCC hIMCC, //IMC的成员句柄 DWORD dwSize //新缓冲区大小 ) 如果成功,返回新的HIMCC,否则为 NULL. 11、DWORD WINAPI ImmGetIMCCSize( //取IMC成员的缓冲区大小 HIMCC hIMCC //IMC成员句柄 ) 返回IMC成员的缓冲区大小 12、DWORD WINAPI ImmGetIMCCLockCount( //返回IMC计数器值 HIMCC hIMCC //IMC成员的句柄 ) 成功返回该IMCC的计数器值,否则为0 13、BOOL WINAPI ImmGetHotKey( //取输入法状态键,该函数供控制面板使用 DWORD dwHotKeyID, LPUINT lpuModifiers, LPUINT lpuVKey, LPHKL lphKL ) 14、BOOL WINAPI ImmSetHotKey( //设置输入法的热键 DWORD dwHotKeyID, UINT uModifiers, UINT uVKey, hKL hKL ) 15、HWND WINAPI ImmCreateSoftKeyboard( //产生一个软键盘 UINT uType, //软件盘上的键码含义的定义方式 //=SOFTKEYBOARD_TYPE_T1 //=SOFTKEYBOARD_TYPE_C1 UINT hOwner, //该输入法的UI窗口 int x, //定位坐标 int y //定位坐标 ) 成功返回软键盘的窗口句柄 16、BOOL WINAPI ImmDestroySoftKeyboard( //销毁软键盘 HWND hSoftKbdWnd //软年盘窗口句柄 ) 成功为TRUE,法哦则为FALSE. 17、BOOL WINAPI ImmShowSoftKeyboard( //显示或隐藏软键盘 HWND hSoftKbdWnd, //软年盘窗口句柄 int nCmdShow //窗口状态=SW_HIDE 表示隐藏,=SW_SHOWNOACTIVATE表示显示 ) 如构成功返回 TRUE. 否则为 FALSE.