请问如何主动调用Windows的输入法?我想在其他组件(非输入组件)上也可以打字,如何做到?

yyxgs 2021-05-14 09:36:20
在TextField组件或者TextArea组件中,
只要鼠标点击一下,就可以使用输入法打字了
请问这个原理是什么?
我想在其他组件上也可以打字。
例如,点击一下按钮,输入法就激活了,就像点击TextField一样?
...全文
296 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyxgs 2021-05-20
  • 打赏
  • 举报
回复
是的,我是为了实现类似IDE中的效果,发现还挺复杂。
tmoonlight 2021-05-18
  • 打赏
  • 举报
回复
刚好最近在搞这一块,简单回答一下,楼主要搞清楚这个东西,需要了解两个技术: 第一,如何创建光标?任意一个控件,如果需要输入文本必须创建光标(调用setcaret)。 第二,如何输入中文文本?如果需要处理输入法请求则需要和tsf或者imm对接,处理相应的输入法消息。 如果想深入了解这一块,可以搜索一下如何用纯WINAPI 实现一个文本框,以及输入法编程的原理和基础(建议看tsf框架的基础)。
赵4老师 2021-05-18
  • 打赏
  • 举报
回复
仅供参考: MultiUI Sample Click to open or copy the files for the MultiUI sample. Building SDK Samples This sample uses the following keywords: aboutdlg; addresultstring; beginpaint; choosefont; createfontindirect; createic; createwindow; createwindowex; defwindowproc; deletedc; deleteobject; destroystringbuffer; dialogbox; dispatchmessage; drawtext; enddialog; endpaint; freeprocinstance; getclientrect; getdc; getdefaultguifont; getfocus; getmessage; getobject; getstockobject; gettextmetrics; getversionex; getwindowlong; globalalloc; globalfree; immassociatecontext; immcreatecontext; immdestroycontext; immgetcompositionstring; immgetcontext; immisuimessage; immreleasecontext; immsetcompositionfont; immsetcompositionwindow; initapplication; initinstance; initstringbuffer; invalidaterect; iswindow; loadcursor; loadicon; lstrcat; lstrcpy; lstrlen; mainwndproc; makeprocinstance; memset; movewindow; mychangefont; mydrawstring; mysetcompositionfont; mysetcompositionform; nouinoimcwndproc; nouiownimcwndproc; overflowtext; ownuiownimcwndproc; postquitmessage; releasedc; rgb; selectobject; setfocus; setwindowlong; switch; systemparametersinfo; textout; translatemessage; winmain; wmcommandwparam; wsprintf MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix, MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl
maguangzhi 2021-05-16
  • 打赏
  • 举报
回复
引用 3 楼 yyxgs的回复:
[quote=引用 2 楼 maguangzhi 的回复:]应该是想自动切换成中文或英文输入模式吧,好像是函数名有IME的函数。时间长了,有点忘了。
不是切换输入模式,而是调用输入法,我想点击一下按钮,然后这个时候输入法就可以用来输入了。[/quote] 点击后调用切换焦点函数,自动切换焦点至输入域即可
yyxgs 2021-05-15
  • 打赏
  • 举报
回复
引用 2 楼 maguangzhi 的回复:
应该是想自动切换成中文或英文输入模式吧,好像是函数名有IME的函数。时间长了,有点忘了。
不是切换输入模式,而是调用输入法,我想点击一下按钮,然后这个时候输入法就可以用来输入了。
maguangzhi 2021-05-15
  • 打赏
  • 举报
回复
应该是想自动切换成中文或英文输入模式吧,好像是函数名有IME的函数。时间长了,有点忘了。
yyxgs 2021-05-14
  • 打赏
  • 举报
回复
有知道的大神指点一下吗?
它有强大的功能: ◆支持三种窗口模式:单窗口 (SDI),多窗口 (MDI) 和伪多窗口 (PMDI); ◆完全支持 Unicode 系统 (NT/2000/XP/2003/Vista/7) 上的 Unicode 字符串; ◆支持 Unicode 代码页 (UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE); ◆支持系统上已经安装的任何代码页; ◆支持 DOS/Windows、Unix 和 Mac 换行符格式; ◆文件打开前预览; ◆纠正错误代码页显示; ◆文本列选; ◆多级撤消; ◆支持“正则表达式”的查找/替换,可快速搜索/替换文本字串; ◆能记住文件的代码页和插入点的位置; ◆文档的打印预览和打印; ◆支持语言模块; ◆插件支持 (语法高亮显示、文本折叠、自动完成、脚本执行、键盘宏……)。 通过插件已实现的功能: ◎Clipboard.dll: 捕捉剪贴板; ◎Coder.dll: 支持多种编程语言的语法高亮显示、文本折叠、自动完成; ◎ContextMenu.dll: 可以自定义主菜单,编辑区、MDI 标签、超链接和文件的右键菜单; ◎Exit.dll: 提供退出 AkelPad 时的消息提示框和改变按 ESC 键的行为; ◎Explorer.dll: 显示资源管理器面板; ◎Fonts.dll: 字体不用安装到系统就可动态的加载; ◎Format.dll: 行的排序和排列,提取唯一行,提取或删除重复行,固定换行……; ◎FullScreen.dll: 全屏显示的切换插件; ◎HexSel.dll: 文本与十六进制值的相互转换 (包含 ANSI 和 UNICODE); ◎HotKeys.dll: 自定义热键; ◎LineBoard.dll: 显示行号和支持书签操作; ◎Log.dll: 监视日志或捕捉实时输出; ◎Macros.dll: 录制用户的键盘动作并可随后重复它们; ◎MinimizeToTray.dll: 最小化程序到系统托盘; ◎QSearch.dll: 提供一个“快速”文本搜索的小面板; ◎RecentFiles.dll: 管理文件列表; ◎SaveFile.dll: 可以设置自动保存的间隔时间等; ◎Scripts.dll: 脚本插件,基于 Windows 脚本宿主 (WSH) 引擎,因此您可以使用各 种各样的 Windows 组件对象模型 (COM) 的对象,例如,您可以使用 RegExp 对象来执行正则表达式查找替换、筛选文本行,去除行头尾的 空字符,使用 FileSystemObject 对象来操作文件,创建快捷方式, 使用 WshShell 对象来操作 Windows 注册表,或使用 WshNetwork 对 象来运行网络功能,此外,您可以创建和执行利用一个支持自动化的 外部应用程序 (如 Word 和 Excel) 脚本……不仅如此,Scripts.dll 还为 AkelPad 而预置了一些常用的方法调用,可以调用 WinAPI 函 数,从而可以创建有用户交互界面的脚本(如SearchReplace.js等,方 法调用见 Scripts-Chs.txt),和实现更多功能…… ◎Scroll.dll: 拆分窗格或MDI窗口的水平/垂直的同步滚动、自动滚动操作; ◎Sessions.dll: 保存和恢复程序 MDI 会话; ◎SmartSel.dll: 选定文本时排除行尾标记,Home 和 End 键的智能操作; ◎Sounds.dll: 打字时发出声音; ◎SpecialChar.dll: 显示和高亮特殊字符 (空格、制表符、换行符、自动换行、垂直 制表符、换页符、空字符); ◎Speech.dll: 机器朗读选定的文本。未翻译; ◎Stats.dll: 统计显示文档的字符数、单词数、行数等; ◎Templates.dll: 使用预设的模板来创建文档; ◎ToolBar.dll: 工具栏插件,可显示和自定义常用操作的工具栏; ◎XBrackets.dll: 可以在键入左括号时自动键入右括号并把光标置中 (可能与一些中 文输入不兼容而无法自动完成右括号),高亮显示、跳转配对的括 号,选定括号间的文本。 主程序及所有插件是经过翻译了源代码后使用编译器编译生成的。

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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