三、输入法的函数简介
下面我们将介绍上述各个函数的功能及接口格式。
1. BOOL ImeInquire( // 初始化IME LPIMEINFO lpIMEInfo, // 用于初始化该输入法的结构地址 LPTSTR lpszWndClass, // 当前输入法的名称 LPCTSTR/DWORD lpszData // 系统信息,9X系列值为0,NT/2000下有实际值 ) 如果该函数初始化成功,返回TURE,否则为FALSE
2. DWORD IMEConversionList( // 将某字符或字符串转换成目标字符串 HIMC hIMC, // 与当前输入法相关的应用程序句柄 LPCTSTR lpSrc, // 要转换的字符串 (也可能是结果串,可由uFlag指定) LPCANDIDATELIST lpDst, // 转换后的字符串(也可能是源串,可由uFlag指定) DWORD dwBufLen, // 转换后有几个字符 UINT uFlag // 指定结果的存放位置 ) 如果成功,返回转换后的字符串长度
3. BOOL ImeConfigure( //用户设置输入法接口 HKL hKL, //当前输入法句柄 HWND hWnd, //配置窗口的父窗口 DWORD dwMode, //配置什么 LPVOID lpData //用户设置的数据 ) 该函数的功能是提供给输入法使用者一个可以更改某些隐含设置的能力.如果你用过别人的输入法,其中的"配置输入法..."功能既是也!对于一个初写输入法的人,可以不予理它.
4. BOOL ImeDestroy( //关闭当前输入法 UINT uReserved //无用 (0) ) 成功返回TURE,否则为FALSE
5. LRESULT ImeEscape( //用户软件访问输入法内部信息的接口 HIMC hIMC, //当前的应用程序句柄 UINT uEscape, //设置函数功能 //=IME_ESC_QUERY _SUPPORT //=IME_ESC_RESERVED_LAST IME_ESC_RESERVED_FIRST //=IME_ESC_PRIVATE_FIRST IME_ESC_PRIVATE_LAST //=IME_ESC_SEQUENCE_TO_ INTERNAL //=IME_ESC_GET_EUDC_ DICTIONARY //=IME_ESC_SET_EUDC_ DICTIONARY //=IME_ESC_MAX_KEY //=IME_ESC_IME_NAME //=IME_ESC_SYNC_HOTKEY //=IME_ESC_HANJA_MODE //=IME_ESC_GETHELPFILENAME (只适应 Win 98和 2000) //=IME_ESC_PRIVATE_HOTKEY (win 95下不可用) LPVOID lpData //当前功能所需的数据 ) 如果失败,返回0,否则由各个功能决定。有时,人们可以用此函数获取输入法的名称、帮助文件名称等。当然,我们可以不提供这些功能。
6. BOOL ImeSetActiveContext( //激活或搁置当前的输入法 HIMC hIMC, //当前用户程序句柄 BOOL fFlag //激活或搁置:=TRUE 激活 =FALSE 搁置 ) 成功返回TRUE,否则为FALSE
7. BOOL ImeProcessKey( //处理应用程序传入的所有击键事件 //监测是否当前输入法所需的 HIMC hIMC, //应用程序句柄 UINT uVirKey, //需处理的虚键 DWORD lParam, //击键消息参数 CONST LPBYTE lpbKeyState //当前键盘状态(256字节) ) 如果此键是该输入法需要的,则返回TRUE,否则为FALSE,只有返回true的击键,IME才去处理
8. BOOL NotifyIME( //输入法选择窗口状态管理函数: HIMC hIMC, //当前的应用程序句柄 DWORD dwAction, //状态值 DWORD dwIndex, //与状态值有关的序号 DWORD dwValue //与状态值有关的值 ) 状态值说明: =NI_OPENCANDIDATE 打开编码选择窗口 =NI_CLOSECANDIDATE 关闭当前的编码选择窗 =NI_SELECTCANDIDATESTR 选摘编码,此时dwIndex 被选择的编码列表序号,dwValue 被选中的编码在当前的编码列表中的序号 =NI_CHANGECANDIDATELIST 改变当前的编码列表(按pageup等键操作)此时:dwIndex 被选择的编码列表序号, dwValue 不用 =NI_SETCANDIDATE_PAGESTART 设置编码开始页号 此时: dwIndex 被改变的编码列表序号,dwValue 新页的开始序号. =NI_SETCANDIDATE_PAGESIZE 改变编码列表页的大小 此时:dwIndex 当前编码页序号,dwValue 新的页大小 =NI_CONTEXTUPDATED 更新应用程序的信息的输入法的信息:移动位置,设置模式,设置编码窗口,字体。此时:dwIndex 只用于 dwValue="IMC"_SETCONVERSIONMODE, IMC_SETSENTENCEMODE ,dwValue 可取由 WM_IME_CONTROL 发送的下列值:IMC_SETCANDIDATEPOS,IMC_SETCOMPOSITIONFONT,IMC_SETCOMPOSITIONWINDOW ,IMC_SETCONVERSIONMODE ,IMC_SETSENTENCEMODE ,IMC_SETOPENSTATUS 。 =NI_COMPOSITIONSTR 改变编码窗口中的编码 ,此时:dwIndex 取下列值:CPS_COMPLETE 完成编码转换;CPS_CONVERT 转换编码;CPS_REVERT 取消当前的编码;CPS_CANCEL 清除编码,并关闭编码窗 。dwValue 不用 此函数成功,返回TRUE,否则为FALSE
9. BOOL ImeSelect( //初始化输入法 HIMC hIMC, //当前应用程序句柄 BOOL fSelect //是否初始化当前输入法,TRUE表示初始化 ) 返回:成功返回true,否则为FALSE
10. BOOL ImeSetCompositionString( //将编码窗口中输入的编码保存的编码结构中, //同时发送编码完成消息 WM_IME_COMPOSITION给系统 HIMC hIMC, //当前的应用程序句柄 DWORD dwIndex, //设置此函数功能 //=SCS_SETSTR //=SCS_CHANGEATTR //=SCS_CHANGECLAUSE //= SCS_QUERYRECONVERTSTRING //=SCS_RECONVERTSTRING //=SCS_SETRECONVERTSTRING LPCVOID lpComp, //编码数据区 DWORD dwCompLen, //编码数据区长度 LPCVOID lpRead, //读入的编码数据 DWORD dwReadLen //读入的编码数据长度 ) The ImeSetCompositionString function is used by an application to set the IME composition string structure with the data contained in the lpComp or lpRead parameters. The IME then generates a message.
11. UINT ImeToAsciiEx( //转换编码称汉字(串) UINT uVirKey, //虚键 UINT uScanCode, //扫描码 CONST LPBYTE lpbKeyState, //用户定义的键盘状态 LPDWORD lpdwTransBuf, //转换后的数据存放区 UINT fuState, //活动菜单标志 HIMC hIMC //当前的应用程序句柄 ) 返回:返回值表示有几个消息,可理解为:本编码对应的汉字串有几个汉字组成(当然,这并不相等)。
12. BOOL WINAPI ImeRegisterWord( LPCTSTR lpszReading, DWORD dwStyle, LPCTSTR lpszString )
Adds a new string to the dictionary of this IME.
Returns TRUE if successful, FALSE otherwise.
lpszReading
Address of the reading string for the new string.
dwStyle
Style of the new string. It can be a combination of these values:
Value |
Meaning |
IME_REGWORD_STYLE_EUDC |
The string is in EUDC range. |
IME_REGWORD_STYLE_USER_FIRST, IME_REGWORD_STYLE_USER_LAST |
An ISV can use the constants in this range to define private styles for the IME. |
lpszString
Address of the new string.
13、BOOL WINAPI ImeUnregisterWord( LPCTSTR lpszReading, DWORD dwStyle, LPCTSTR lpszString )
Removes a string from the dictionary of this IME.
Returns TRUE if successful, FALSE otherwise.
lpszReading
Address of the reading string for the string to be removed.
dwStyle
Style of the string to be removed. It can be a combination of these values:
14、UINT WINAPI ImeGetRegisterWordStyle( UINT nItem, LPSTYLEBUF lpStyleBuf )
Retrieves the available styles in this IME.
Returns the number of styles copied to the buffer or, if nItems is zero, the buffer size, in array elements, needed to receive all available styles in this IME.
nItem
Maximum number of styles that the buffer can hold.
lpStyleBuf
Address of a STYLEBUF structure that receives the styles
15、UINT WINAPI ImeEnumRegisterWord( hKL, REGISTERWORDENUMPROC lpfnEnumProc, LPCTSTR lpszReading, DWORD dwStyle, LPCTSTR lpszString, LPVOID lpData )
见MSDN中的解释
16、DWORD WINAPI ImeGetImeMenuItems( HIMC hIMC, DWORD dwFlags, DWORD dwType, LPIMEMENUITEMINFO lpImeParentMenu, LPIMEMENUITEMINFO lpImeMenu, DWORD dwSize ) |
文章评论(0条评论)
登录后参与讨论