关于文本框控件设计的一些问题

zerozerg2006 2020-08-06 10:45:59
文本控件如何去监控,鼠标点击对应文本段落的位置。

举例来说,我点击了一个文本框中的某个位置,需要将光标移动到这个位置最近的一个字符间隔之间

CSDN牛逼,如果我点了B字符靠右边的地方,我希望光标移动到N与“牛”之间。

这种功能的设计思路是怎样的?

我想到了一个方式是先初始化所有汉字以外的符号的大小宽度,由于汉字的大小通常来说对于同一字体是一致的,所以只知道字体的大小。然后根据鼠标点击的位置,用文本去拼长度,拼到一个距离最近的字符就是光标应该的位置。
但这总作法感觉效率很低,文本短还好说,文本太长了,即便用二分去找,效率其不是也会很感人

所以不知道有没有大佬能提供一个思路参考一下。
...全文
145 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zerozerg2006 2020-08-10
  • 打赏
  • 举报
回复
找到方法了,根据文字纹理的位置配合触碰或者点击的位置,去定位选择的字符位置。有了判断与定位方法,剩下的查找就简单了,顺序,二分都可以。
  • 打赏
  • 举报
回复
还真没有从头写过编辑器。
不过根据鼠标点击的位置计算出在总体文本中的大概位置还是可以的。
然后用GetTextExtent,取一段文本,计算出文本的位置,两者对比,二分法对比,应当就可以定位到了。

64,644

社区成员

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

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