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号列表窗口.
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
替换结果串
4、WM_IME_COMPOSITIONFULL
用户接口窗口不能增加编码窗口的尺寸时,ime用户接口窗口将发送WM_IME_COMPOSITIONFULL消息,可不处理。
wParam
= 0
lParam=
0
5、WM_IME_ENDCOMPOSITION
当编码结束时ime发送此消息WM_IME_ENDCOMPOSITION
wParam
= 0
lParam=
0
用户程序可以接受此消息,以便自己显示用户输入的编码。
6、WM_IME_SELECT
系统发出WM_IME_SELECT以便选择一个新的ime。
fSelect=
(BOOL)wParam; TRUE表示新的IME已选择,FALSE表示不被选择或关闭该输入法。
hKL= lParam;
系统利用这个消息产生或关闭老的输入法用户窗口。
7、WM_IME_STARTCOMPOSITION
当用户开始输入编码时,系统立即发送该消息到IME中,IME打开编码窗口。
wParam
= 0
lParam= 0
8、WM_IME_NOTIFY
IME消息组:
wSubMessage=
wParam;
lParam= lParam;
各消息说明:
1)IMN_CLOSESTATUSWINDOW
关闭状态窗口时,系统发送IMN_CLOSESTATUSWINDOW消息。
wSubMessage = IMN_CLOSESTATUSWINDOW;
lParam=
0;
当用户接口窗口接收到此消息时,将关闭状态窗口。
2)IMN_OPENSTATUSWINDOW
产生或打开状态窗口
wSubMessage
= IMN_OPENSTATUSWINDOW;
lParam=
0;
当ime接收到此消息时,将产生状态窗口.
有关状态串口的信息可用ImmGetConversionStatus获取,设置状态窗口的信息可用ImmSetConversionStatus.
3)IMN_OPENCANDIDATE
打开或产生列表选择窗口
wSubMessage
= IMN_OPENCANDIDATE;
lCandidateList=
lParam;
4)IMN_CHANGECANDIDATE
更新当前的列表选择窗口
WM_IME_NOTIFY
wSubMessage
= IMN_CHANGECANDIDATE;
lCandidateList=
lParam;
5)IMN_CLOSECANDIDATE
关闭选择窗口
wSubMessage =
IMN_CLOSECANDIDATE;
lCandidateList=
lParam;
UI窗口接收此消息后,将销毁列表选择窗口
IMN_SETCONVERSIONMODE
改变输入法状态模式管理
wSubMessage
= IMN_SETCONVERSIONMODE;
lParam=
0;
IMN_SETOPENSTATUS
设置输入法状态
wSubMessage =
IMN_SETOPENSTATUS;
lParam=
0;
IMN_SETCANDIDATEPOS
设置列表窗口位置
wSubMessage =
IMN_SETCANDIDATEPOS;
lCandidateList= lParam;
Parameters
IMN_SETCOMPOSITIONFONT
设置编码窗口字体
wSubMessage
= IMN_SETCOMPOSITIONFONT;
lParam=
0;
IMN_SETCOMPOSITIONWINDOW
设置编码窗口
wSubMessage =
IMN_SETCOMPOSITIONWINDOW;
lParam=
0;
IMN_GUIDELINE
错误信息处理
wSubMessage =
IMN_GUIDELINE;
lParam=
0;
IMN_SOFTKBDDESTROYED
关闭软键盘
wSubMessage =
IMN_SOFTKBDDESTROYED;
lParam= 0;