`
weihe6666
  • 浏览: 430241 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

IME输入法编程

 
阅读更多
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.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics