各位前辈,我一直搞不明白wpf或Form的文本控件是如何获得输入法结果的?请前辈解惑!谢谢?

lghyf 2018-05-03 04:20:59
各位前辈,我一直搞不明白wpf或Form的文本控件(如TextBox,RichTextBox)是如何获得输入法结果的?请前辈解惑!谢谢?
...全文
818 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
对于微软系统的应用程序来说,其实很简单,每一个窗口进程都有一个主窗口。那么windows每当捕获到底层中断抛出的事件,判断它需要抛出“按键”消息事件,那么就往当前桌面上激活着的所有主窗体发送按键消息。由应用程序主窗体自己再往各个子窗口去发布这个消息通知。各个窗体判断自己是否“命中”这个消息,比如说自己的文本框恰好有(进程唯一的)输入焦点这就是判断依据。
  • 打赏
  • 举报
回复
这个程序随着程序的执行而执行 --> 这个程序随着硬件的通电而执行
  • 打赏
  • 举报
回复
计算机底层并没有操作系统,只有基本的 BIOS 系统,这个程序随着程序的执行而执行,它触发各种I/O事件。然后BIOS加载了操作系统,操作系统捕获底层抛出的事件,自己进行进一步地各种各式的处理。不从计算机体系结构、 I/O系统、中断事件学起,那么就等于说只学过吃粮食而没有学过种粮食的知识一样,没有学过计算机软件。
  • 打赏
  • 举报
回复
输入法有各种处理方式,例如它可以遵守 windows 的输入法编程接口 API 要求来开发,从而将消息参数从原本的 chuang 英文改为汉字“床”。当然最早的中文 windows 输入法使用了流氓软件的做法来修改 windows 的 DLL,也是可以的。
xuzuning 2018-05-05
  • 打赏
  • 举报
回复
e.KeyCode、e.KeyChar、e.KeyValue 等,都提供了按键信息 但遗憾的是,大多情况下中文按键信息被输入法贪污了,你只能得到 229 你只能在 TextChanged 事件里判断处理了
维秀斯丢丢 2018-05-04
  • 打赏
  • 举报
回复
这个是windows操作系统的东西了!
lghyf 2018-05-03
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
是如何获得输入法结果的? 接收并处理 输入法软件 发出的消息
正常情况下,操作系统应该会
引用 5 楼 xuzuning 的回复:
订阅 KeyDow 或 KeyUp 事件 或重载 WinProc 方法
老大,中文输入法结束后,操作系统会发一个什么消息给窗口?这个消息是不是包括了输入的内容?
xuzuning 2018-05-03
  • 打赏
  • 举报
回复
订阅 KeyDow 或 KeyUp 事件 或重载 WinProc 方法
lghyf 2018-05-03
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
是如何获得输入法结果的? 接收并处理 输入法软件 发出的消息
是的,正常情况下输入的文字会马上显示在RichTextBox等控件中,我希望在显示之前就要取得内容修改后才显示。
xuzuning 2018-05-03
  • 打赏
  • 举报
回复
是如何获得输入法结果的? 接收并处理 输入法软件 发出的消息
  • 打赏
  • 举报
回复
输入法做的事情,跟wpf和winform、webform有什么关系……
  • 打赏
  • 举报
回复
在winfrom下走的是windowsAPI 在webfrom下走的是post后台接收等

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧