IME输入法编程
第三章 输入法的消息
Messages
1.WM_IME_SETCONTEXT
激活或休眠输入法
LRESULT CALLBACK UIWndProc(HWND hUIWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
:
case WM_IME_SETCONTEXT:
fSet= (BOOL) wParam;
lISCBits = lParam;
}
如果fSet为TRUE,系统将激活当前输入法的某个窗口(状态窗、列表窗等),为FALSE时休眠当前输入法.
其中lISCBits中指出对哪个窗口操作。
数值 含义
ISC_SHOWUICOMPOSITIONWINDOW 显示编码窗口
ISC_SHOWUIGUIDWINDOW 显示信息窗口
ISC_SHOWUICANDIDATEWINDOW 显示0号列表窗口
(ISC_SHOWUICANDIDATEWINDOW << 1) 显示1号列表窗口.
(ISC_SHOWUICANDIDATEWINDOW << 2) 显示2号列表窗口.
(ISC_SHOWUICANDIDATEWINDOW << 3) 显示3号列表窗口.
Comments
After an application calls DefWindowProc( or ImmIsUIMessage)with WM_IME_SETCONTEXT, the UI window receives WM_IME_SETCONTEXT. If the bit is on, the UI window shows the composition, guide, or candidate window as the bit status of lParam.
If an application draws the composition window by itself, the UI window does not need to show its composition window. The application then has to clear the ISC_SHOWUICOMPOSITIONWINDOW bit of lParam and call DefWindowProc or ImmIsUIMessage with it.
2.WM_IME_CONTROL
管理当前输入法
wSubMessage= wParam; 受WM_IME_CONTROL 控制的消息
lpData = (LPVOID) lParam; 对应的数据
其中子消息有下列消息:
1)IMC_GETCANDIDATEPOS
获取列表窗口的位置.此时lParam传送的是CANDIDATEFORM结构地址。
如果此消息成功返回0,否则非零。
通常如果你设计此部分了,返回0。否则返回1。
2)IMC_GETCOMPOSITONFONT
获取编码窗口字体结构, lParam为LOGFONT结构地址
如果此消息成功返回0,否则非零。
通常如果你设计此部分了,返回0。否则返回1。
3)IMC_GETCOMPOSITONWINDOW
获取编码窗口位置,lParam为COMPOSITIONFORM结构地址。
如果此消息成功返回0,否则非零。
通常如果你设计此部分了,返回0。否则返回1。
4)IMC_GETSOFTKBDFONT
获取软键盘字体。 lParam字体结构LOGFONT地址。
5)IMC_GETSOFTKBDPOS
获取软键盘位置,lParam = 0;
返回软键盘在屏幕窗口中的坐标结构POINTS。
6)IMC_GETSOFTKBDSUBTYPE
wSubMessage= IMC_GETSOFTKBDSUBTYPE;
lParam = 0;
7)IMC_GETSTATUSWINDOWPOS
获取状态窗口位置
wSubMessage= IMC_GETSTATUSWINDOWPOS;
lParam = 0;
返回状态窗口坐标原点在屏幕窗口中的坐标结构POINTS。
8)IMC_SETCANDIDATEPOS
wSubMessage= IMC_SETCANDIDATEPOS;
lpCANDIDATEFORM= (LPCANDIDATEFORM) lParam;
设置列表窗口的位置.此时lParam传送的是CANDIDATEFORM结构地址。
如果此消息成功返回0,否则非零。
注意:UI窗口不接受此消息,它的管理函数是NotifyIME。
9)IMC_SETCOMPOSITONFONT
设置编码窗口的字体.此时lParam传送的是LOGFONT结构地址。
wSubMessage= IMC_SETCOMPOSITIONFONT;
lpLogFont= (LPLOGFONT) lParam;
注意:UI窗口不接受此消息,它的管理函数是NotifyIME。
10)IMC_SETCOMPOSITONWINDOW
设置编码窗口属性,此时lParam传送的是COMPOSITIONFORM结构地址。
wSubMessage= IMC_SETCOMPOSITIONWINDOW;
lpCOMPOSITIONFORM= (LPCOMPOSITIONFORM) lParam;
如果此消息成功返回0,否则非零。
注意:UI窗口不接受此消息,它的管理函数是NotifyIME。
11)IMC_SETSOFTKBDDATA
设置软键盘数据,此时lParam传送的是SOFTKBDDATA结构地址,用户设定自己的软键盘字符。
wSubMessage= IMC_SETSOFTKBDDATA;
lpSoftKbdData= (LPSOFTKBDDATA) lParam;
如果此消息成功返回0,否则非零。
注意:UI窗口不接受此消息,它的管理函数是NotifyIME。
12)IMC_SETSOFTKBDSUBTYPE
设置软键盘类型
wSubMessage= IMC_SETSOFTKBDSUBTYPE;
lSubType= lParam;
成功返回subtype,否则返回-1.
注意:UI窗口不接受此消息,它的管理函数是NotifyIME。
13)IMC_SETSOFTKBDFONT
设置软键盘字体,此时lParam传送的是LOGFONT结构地址
wSubMessage= IMC_SETSOFTKBDFONT;
lpLogFont= (LPLOGFONT)lParam;
如果此消息成功返回0,否则非零。
注意:UI窗口不接受此消息,它的管理函数是NotifyIME。
14)IMC_SETSOFTKBDPOS
设置软件位置,此时lParam传送的是POINTS结构
wSubMessage= IMC_SETSOFTKBDPOS;
ptsPt= (POINTS)lParam;
如果此消息成功返回0,否则非零。
15)IMC_SETSTATUSWINDOWPOS
设置状态窗口位置,此时lParam传送的是POINTS结构
wSubMessage= IMC_SETSTATUSWINDOWPOS;
ptsPt= (POINTS)lParam;
如果此消息成功返回0,否则非零。
3、WM_IME_COMPOSITION
当用户改变了编码状态时,发送此消息WM_IME_COMPOSITION
应用程序可以通过调用ImmGetCompositionString获取新的编码状态。
wChar= wParam; 最后输入到编码窗口的2字节的DBCS字符
lAttribute= lParam; 当前编码的含义。
lAttribute可取下列值得组合:
值 含义
GCR_ERRORSTR 修正错误
GCR_INFORMATIONSTR 修正信息串
GCS_COMPATTR 修正编码串属性.
GCS_COMPCLAUSE 修正编码信息.
GCS_COMPREADATTR 修正读入串的属性
GCS_COMPREADCLAUSE 修正读入串的属性.
GCS_COMPREADSTR 修正读入串。
GCS_COMPSTR 修正当前的编码
GCS_CURSORPOS 修正当前编码的光标位置.
GCS_DELTASTART 修正当前编码的开始位置
GCS_RESULTCLAUSE 修正结果串的信息.
GCS_RESULTREADCLAUSE 修正读入串的信息.
GCS_RESULTREADSTR 修正读入串.
GCS_RESULTSTR 修正编码结果串.
CS_INSERTCHAR 在当前位置插入一个字符
CS_NOMOVECARET 替换结果串
Comments
When an application wants to display composition characters by themselves, it should not pass this message to the application IME user interface window or to DefWindowProc. The DefWindowProc function processes this message to pass to the Default IME window. An IME should send this message to an application even when the IME only cancels the current composition. This message should also be used to notify an application or IME UI to erase the current composition string.
4.IMN_SETCOMPOSITIONWINDOW
设置编码窗口
The IMN_SETCOMPOSITIONWINDOW message is sent when the composition form of the Input Context is updated. When the UI window receives this message, the cfCompForm of the Input Context can be referenced to obtain the new conversion mode.
Comments
The composition component of the UI window uses cfCompForm to show the composition window.
分享到:
相关推荐
IME 输入法编程 IME 输入法编程是指在 Windows 操作系统中,开发者可以使用 IME(Input Method Editor)来实现输入法的编程。IME 输入法编程主要用于实现输入法的输入、编辑和显示。 在 Windows 操作系统中,IME ...
Windows IME输入法编程涉及到创建、修改或扩展内置的输入法系统,以满足特定的语言输入需求。这个"Windows IME输入法编程.rar"压缩包可能包含了关于开发自定义输入法的相关资源和教程。 在Windows平台上,IME主要...
### IME输入法编程指南 #### 一、概述 本文档旨在介绍在IME(Input Method Editor,输入法编辑器)框架下开发输入法的基本原理与思路,并以微软拼音输入法为例进行详细介绍。通过本指南,开发者可以了解到如何利用...
### IME输入法编程知识点详解 #### 一、IME输入法基本原理 IME(Input Method Editor,输入法编辑器)是一种用于将用户输入的标准ASCII字符转换为特定语言字符的技术,尤其是在处理非拉丁字母语言时尤为关键。在...
在Windows Ime 输入法编程中,开发者可以创建自定义的IME,以满足特定的输入需求或者提供更加个性化的输入体验。这涉及到以下几个关键知识点: 1. **IME架构**:Windows IME基于COM(Component Object Model)组件...
### IME输入法编程VC资料知识点详述 #### 一、Windows9x系统下汉字输入法的基本原理 在Windows9x系统中,汉字输入法(IME, Input Method Editor)是实现汉字输入的关键技术之一。其核心功能是将标准ASCII字符序列...
在Windows Ime 输入法编程中,开发者可以创建自定义的IME,以满足特定的输入需求或者提供更加个性化的输入体验。这涉及到以下几个关键知识点: 1. **IME架构**:Windows IME基于COM(Component Object Model)组件...
在Windows Ime 输入法编程中,开发者可以创建自定义的IME,以满足特定的输入需求或者提供更加个性化的输入体验。这涉及到以下几个关键知识点: 1. **IME架构**:Windows IME基于COM(Component Object Model)组件...
Windows IME编程涉及到创建自定义的输入法,以满足特定的输入需求或者提供更高效的输入体验。以下是对这个主题的详细讲解: 1. **IME架构** - Windows IME系统由多个组件组成,包括IME核心、候选窗口、转换引擎和...
IME是什么?IME是在Windows平台上使用的标准的输入法接口规范。它实质是一个DLL,Windows为...关于具体接口的定义不是本文的重点,如果您需要了解只需要在网络中搜索“输入法编程指南”就可以明白 ,更多信息参考MSDN。
通过深入研究这个源码,不仅可以掌握易语言的编程技巧,还能了解到IME输入法的设计原理,对于想要在易语言环境下开发自定义输入法或者对输入法技术感兴趣的开发者来说,这是一个宝贵的参考资料。同时,这个项目也...
本篇文章将深入探讨如何使用VC进行IME输入法的编程,以帮助开发者理解IME的工作原理,并掌握在VC环境下创建自定义输入法的方法。 首先,我们需要了解IME的基本工作流程。IME输入法通常包含三个主要组件:候选窗口、...
通过深入学习和分析"IME输入法.rar"中的源码,开发者不仅可以掌握IME的基本原理,还能了解到易语言的编程实践,这对于开发自己的输入法或者其他基于文本输入的应用程序都是非常有益的。同时,源码学习也是提升编程...
总的来说,通过VC++制作Windows IME输入法涉及Windows API的深入理解、多线程编程、字符编码知识以及用户界面设计等多个方面。这个过程虽然复杂,但能够提供高度定制的输入体验,对提高用户体验具有重要意义。开发者...
本文将深入探讨“IME.zip_ime_切换输入法_输入法_输入法编程”这个主题,介绍如何通过编程实现在输入框获取和失去焦点时自动切换输入法。 首先,我们需要了解输入法的切换机制。在Windows系统中,输入法切换通常是...
【路路通输入法编程指南】是一篇针对输入法编程的教程文章,旨在帮助读者理解输入法的工作机制和编程过程。作者以个人经历为切入点,表明即使没有编程基础也能通过学习掌握输入法编程。 首先,文章指出输入法编程...
通过研究这个易语言IME输入法源码,开发者不仅可以掌握易语言的编程技巧,还能深入理解输入法系统的设计与实现,对于想要开发自定义输入法或者进行系统级编程的程序员来说,这是一个很好的实践平台。同时,这也为...