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

2024-04-21 12:48

本文主要是介绍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输入法编程: 第二章 Windows9x系统提供的ime管理函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923122

相关文章

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制