gpt4 book ai didi

c++ - 在 wxTextCtrl 中设置插入点的问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:13 34 4
gpt4 key购买 nike

我正在尝试在 wxWidgets(版本 2.8.12)中实现自定义小部件,本质上是修改后的单行 wxTextCtrl。它需要一个由空格分隔的两组 8 位十六进制数字组成的文本输入,我希望控件自动处理该空格。例如,如果用户两次键入 1-8(无需按空格键),文本控件的结果内容应为:

12345678 12345678

如果用户随后将光标放在第一个“3”之后并退格 3 次,则该空格应在他们编辑时自动调整,从而导致:

45678123 45678

本质上,空间对用户应该是完全透明的。

我已经完成了大部分工作。代码有点长,贴在这里,所以这里有一个要点:
https://gist.github.com/036c1a90f77521a8653c

但是,有一个错误我似乎无法修复 - 在键入第九位数字时,它会自动插入空格,但光标会停在空格之后,恰好在第九位数字之后。

12345678 |1

所有使用 wxTextCtrl::SetInsertionPoint()wxTextCtrl::SetInsertionPointEnd() 的尝试都没有成功,所以我来到这里作为最后的手段希望有人能指出我做错了什么。

为了帮助测试这个小部件,我准备了一个包含该小部件的非常快速但肮脏的应用程序:
https://gist.github.com/cf3219eb47e2bfe85b38
或单击此处以 tarball 格式下载代码:
https://gist.github.com/gists/cf3219eb47e2bfe85b38/download

只需运行 make 即可一次性清理、编译和运行代码。当然,你需要安装 wxWidgets 2.8.12 才能编译。

大多数情况下,这个小部件的每个其他方面都完全按照我想要的方式工作 - 正是这个非常大的问题导致它无法正常工作。但是,有一个我很好奇的小错误,虽然这不是主要问题,但我想找个时间修复它。

即使在删除字符时也会自动处理空格,即使您删除了一个选择 - 但是,如果您删除的选择在第九位结束,它不会在删除后重新格式化控件的内容。

如果有人能查明原因,我们将不胜感激,但插入点问题显然是我主要关心的问题。

感谢任何愿意提供帮助的人,我尽量提供了尽可能多的信息和解释 - 如果我遗漏了什么,请告诉我。

最佳答案

一般来说,很难修改 native 控件的输入处理,因为它在不同平台下的行为不同。我不知道您是否已经在所有(或至少不止一个)问题下测试了您的代码,但我完全希望您能发现更多问题。

与其尝试自己做,我建议您查看建议添加到 wxWidgets 本身的 wxMaskedEdit。这还不是最终的,但有一个 preliminary version已经,我认为它也可以与 2.8 一起使用(当然,它是用 2.9 开发的)。

关于c++ - 在 wxTextCtrl 中设置插入点的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12549292/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com