Windows中ProcessKey是什么?RTF控件注音键盘调试疑问
关于Windows中文注音键盘在RTF控件中触发ProcessKey按键事件的疑问
我们的应用在RTF控件中使用Windows中文注音键盘时遇到问题(此为另一独立问题)。调试时发现,当注音键盘处于“编辑模式”(即中文内容未“确认”的状态),按下‘c’键会触发如下按键事件:
richTextBox1_KeyDown: e.KeyCode=ProcessKey / e.KeyData=ProcessKey / e.KeyValue=229 / e.Modifiers=None / e.SuppressKeyPress=False richTextBox1_KeyUp: e.KeyCode=C / e.KeyData=C / e.KeyValue=67 / e.Modifiers=None / e.SuppressKeyPress=False / e.Modifiers=None / e.Handled=False
在此场景下,按下‘c’键时KeyDown事件为ProcessKey,KeyUp事件为C。我搜索后未找到相关信息,请问ProcessKey是什么?Forms.Keys仅给出如下定义:
// // Summary: // The PROCESS KEY key. ProcessKey = 229,
ProcessKey(值229)的含义
- ProcessKey是Windows消息机制中标记输入法编辑器(IME)正在处理按键输入的特殊信号。当使用中文注音这类需先输入注音再选择候选字的输入法时,处于未确认输入的编辑状态下,IME会拦截按键,向控件发送值为229的KeyDown事件,告知控件当前按键正由IME处理,无需自行解析原始按键码。
- 后续触发的KeyUp事件返回真实按键(此处为C),是因为IME完成了对该按键的初步处理,将原始按键信息反馈给控件,但此时输入内容仍处于IME的编辑缓冲区中,并未真正写入RTF控件的文本内容。
- WinForms的
Forms.Keys枚举中定义的ProcessKey = 229,是对Windows底层这个特殊按键标记的封装,专门用于区分IME活跃状态下的按键事件。
内容的提问来源于stack exchange,提问作者Zoli
相关产品推荐
相关产品推荐

