`

IME输入法编程: 第二章 Windows9x系统提供的ime管理函数

阅读更多

 

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 //显示或隐藏软键盘
 

 

二、IMM函数使用格式说明

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.
 

分享到:
评论

相关推荐

    IME输入法编程VC资料

    输入法编程详解:第一章 Windows9x系统下汉字输入法的基本原理;第二章 Windows9x系统提供的ime管理函数;第三章 ime文件中必须使用的结构;

    IME输入法编程指南

    讲述IME框架下开发输入法的基本原理和基本思路,以微软拼音为例,详细描述各种API函数的使用方法和源代码,很有指导意义。

    输入法设置工具 IME TOOL 2.6.5

    10、问:Windows 系统本身就自带输入法管理功能,要 IMETool 何用? 答: ⑴系统自带输入法管理功能无法调整各输入法顺序,而 IMETool 可以实时调整。 ⑵系统自带输入法管理功能只能设置 Ctrl + Alt + 1 之类有限的...

    win32输入法编程方法

    基于windows32位操作系统API的输入法编程方法。介绍各个与输入法相关的API函数的详细用法。

    Windows输入法源程序

    ime.zip=>IME输入法源程序 tminstall.zip=>安装输入法源程序 imm.h multimon.h winhtml.zip=>VC下的HTML编译库 请将imm.h和multimon.h拷贝到vc++下的include目录下 用户应在readmb函数中加入自己的码表读取...

    C++输入法源码例子

    \r\nime.zip=>IME输入法源程序 \r\ntminstall.zip=>安装输入法源程序 \r\nimm.h \r\nmultimon.h \r\nwinhtml.zip=>VC下的HTML编译库 \r\n请将imm.h和multimon.h拷贝到vc++下的include目录下 \r\n用户应在...

    利用输入法注入DLL

    输入法在系统目录是以IME为扩展名的文件 ,当在应用程序中激活某个输入法时,输入法管理器就会在那个应用程序的进程中加载对应 的IME文件,注意,加载IME文件跟加载普通的DLL并没有本质区别,所以,可以认为,输入...

    bm.zip_ime

    IME输入法源程序 tminstall.zip=>安装输入法源程序 imm.h multimon.h winhtml.zip=>VC下的HTML编译库 请将imm.h和multimon.h拷贝到vc++下的include目录下 用户应在readmb函数中加入自己的码表读取功能

    c51实现单片机的中文输入法

    用C51实现单片机的中文输入法 说明: ...拼音输入法杳询函数: unsigned char code * py_ime(unsigned char input_py_val[]); input_py_val为已输入的拼音码字符串头指针, 反回值为中文的起始地址,当为0时,杳询失败

    51单片机的中文拼音输入法c源程序

    拼音输入法杳询函数: unsigned char code * py_ime(unsigned char input_py_val[]); input_py_val为已输入的拼音码字符串头指针, 反回值为中文的起始地址,当为0时,杳询失败 应用举例: { unsigned char input_...

    单片机lcd拼音输入法

    拼音输入法杳询函数: unsigned char code * py_ime(unsigned char input_py_val[]); input_py_val为已输入的拼音码字符串头指针, 反回值为中文的起始地址,当为0时,杳询失败 应用举例: { unsigned char input_...

    diy输入法安装程序

    这是制作“王码五笔字型输入法”全自动安装程序的关键函数。函数两个参数分别为输入法IME文件的文件名和在控制面板的是输入法选项中显示的输入法名称。

    lvgl8.0.1中文拼音输入法(QT仿真完整工程)

    适用于单片机的lvgl简单中文键盘拼音输入法,使用QT5.14创建,直接打开即可运行模拟器 如果QT编译提示有错误,尝试在构建设置中重设目录:QT的左边栏-"项目"->"Desktop QT5.14.2 MinGW 32-bit"->"构建设置"->"概要"->...

    输入法示例程序

    使用MFC编写的基于WINCE, WM6.x操作系统的 关于输入法控制函数的示例代码。 10/29/2008 The following table shows Input Method Manager (IMM) functions with a description of the purpose of each. In This ...

    Hummingbird Exceed v13 2008, 64位版, part1

    Microsoft 系统管理服务器(SMS)——SMS支持直接在Windows Installer中就可用。 Jconfig Sconfig——远程和中心管理和配置 完全的PC X家族——Hummingbird Exceed XDK——设计X Window 程序到基于Windows的平台 ...

    路路通输入法小学演示版程序

    路路通输入法程序 及相关资料 原理比较清晰 小学版本可方便调试 在初中版本上 我给IMM.c 转换函数 加了许多注释 使得更易理解

    NT Locale Emulator Advance (中文名稱: NT全域通)

    执行结果为启动“d:\test\game.exe -G 123 -B 456”,并设置页码为932(日文Shift-JIS),语言区域为日本,字体为“MS Gothic”,以两倍的大小显示,时区为东9区(GMT + 9:00或UTC - 9:00)。 (注:如果参数中包含...

    CorePlus 免费而强大的中文.net 类库 for .net 3.5+

    对于 C/S 结构,获取 CPU/IME 输入法/Memory 内存 等信息, 简化对 图标/键盘钩子/Win32 API 的操作 对于 B/S 结构,获取 访客/服务器 等信息, 简化对 B/S 常见的操作 函数性能测试等辅助工具 更多功能插件... ...

    delphi的外挂式输入法源码附加一种码表

    delphi的外挂式输入法源码,用一个exe和dll简单实现, 不需学ime函数.另外附加一种码表,有字词万条 (不好意思。一个完全版本的在中毒事件中毁灭了,连同我亲自编码的码表。 这个还是在我的一个邮件附件中找到的旧版)

    VB编程资源大全(源码 API)

    通过Windows API函数SendMessage发送消息使List Box中的每一个Item有不同的Tooltip(2KB) 7,TextBox.ZIP 另外一个通过Windows API函数SendMessage发送消息的范例,这个范例改变文本框的只读属性(2KB) 8,FILEVER....

Global site tag (gtag.js) - Google Analytics