如何操作CEdit的内容?

发布于 2024-11-07 00:52:54 字数 342 浏览 14 评论 0原文

我遇到了编辑控制的情况,我需要一些指导。文本编辑器在大多数情况下正常工作,但在其他情况下,根据键入之前的最后几个字符以及根据键入的字符,最后几个字符必须替换为不同的字符。

对我来说显而易见的解决方案是拥有一个字符缓冲区,在内容更改之前使用 GetWindowText(),将键入的字符添加到缓冲区中,如果需要的话操作缓冲区,然后使用 SetWimdowText()。

我知道编辑控件有自己的缓冲区。那么这是拥有自己的缓冲区的正确方法还是有什么方法可以与其共享缓冲区等?编辑器的字符大小可能不超过 4MB。

我需要它在 Windows 7 和 XP 上工作,而不热衷于旧版本。我使用 MFC。

感谢您的帮助。

I have a situation with edit control and I need some guidance. The text editor functions normally in most cases but in other cases, depending on the last few characters before typing and based on the characters typed, the last few characters must be replaced with different characters.

The solution that looks obvious to me is to have a character buffer, GetWindowText() just before the contents are changed, add the characters typed into the buffer, manipulate the buffer if necessary and then SetWimdowText().

I know the edit control has its own buffer. So is this the right approach to have my own buffer or are there ways I can share the buffer with it etc? The editor might not have more than 4MB worth of characters.

I need this to work on Windows 7 and XP, not keen on older ones.I use MFC.

Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痴者 2024-11-14 00:52:54

您不需要自己的缓冲区,而且实际上拥有一个缓冲区会很危险,因为它可能会失去同步。

但您不需要立即设置整个编辑文本。来自文档

此外,如果编辑控件是多行的,则可以通过调用 CEdit 成员函数 GetLine、SetSel、GetSel 和 ReplaceSel 来获取和设置该控件的部分文本。

我认为 ReplaceSel 就是您正在寻找的。虽然本文讨论的是多行编辑控件,但 SetSelReplaceSel 等可以与单行编辑控件配合良好。

You don't need your own buffer and indeed it would be dangerous to have one since it will likely get out of synchronisation.

But you don't need to set the entire edit text at once. From the documentation:

Also, if an edit control is multiline, get and set part of the control's text by calling the CEdit member functions GetLine, SetSel, GetSel, and ReplaceSel.

ReplaceSel is what you are looking for I think. Although this text talks about multiline edit controls, SetSel, ReplaceSel etc. work fine with single line edit controls.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文