本帖最后由 神一样的女人 于 2018-9-12 14:53 编辑
之前想搞一个无窗口的自绘(windowless),但是不知道编辑框控件,是如何实现接受收入的,只输入英文还可以理解,就是输入法输入中文什么的。
今天总算搞明白了。原来windows有一个机制,窗口上创建了caret,就好了,就这么简单。
但是还是需要处理以下事情:输入内容之后,或者鼠标点击了输入内容的中间,需要计算出caret新的位置并显示……这就复杂了。
现在看来,搞明白了编辑框的输入原理,搞dui界面也很遥远啊,至少需要非常熟悉windows所有控件,消息,路漫漫。
上面的代码很简单,希望能给大家一些启发:
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 输入 | 文本型 | | CreateCaret (_启动窗口. 取窗口句柄 (), 1, 1, 24 )SetCaretPos (8, 8 )ShowCaret (_启动窗口. 取窗口句柄 ()) DestroyCaret () 如果 (字符代码 = 8 ) 输入 = 取文本左边 (输入, 取文本长度 (输入 ) - 1 ) 输入 = 输入 + 字符 (字符代码 )_启动窗口.标题 = 输入
懒得复制api的懒人通道:
输入.e
(91.78 KB, 下载次数: 90)
刚刚想到一个用消息模拟输入中文的方法,可以用:
变量名 | 类 型 | 静态 | 数组 | 备 注 | 字节集 | 字节集 | | | i | 整数型 | | | char | 整数型 | | |
字节集 = 到字节集 (“测试用消息输入中文”) 计次循环首 (取字节集长度 (字节集 ), i )  char = 取字节集数据 (字节集, #字节型, i ) SendMessage (编辑框1. 取窗口句柄 (), 258, char, 1 ) 计次循环尾 ()
|