Как манипулировать содержимым CEdit? - PullRequest
0 голосов
/ 14 мая 2011

У меня ситуация с контролем редактирования, и мне нужно руководство.В большинстве случаев текстовый редактор работает нормально, но в других случаях, в зависимости от последних нескольких символов перед вводом и на основе введенных символов, последние несколько символов должны быть заменены другими символами.

Решение, которое кажется очевидным для меня, состоит в том, чтобы иметь буфер символов GetWindowText () непосредственно перед изменением содержимого, добавлять символы, введенные в буфер, манипулировать буфером, если необходимо, и затем SetWimdowText ().

Я знаю, что элемент управления для редактирования имеет свой собственный буфер.Так что это правильный подход, чтобы иметь свой собственный буфер или есть способы, которыми я могу поделиться с ним буфером и т. Д.?Редактор может содержать не более 4 МБ символов.

Мне нужно, чтобы это работало на Windows 7 и XP, а не на старых. Я использую MFC.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 14 мая 2011

Вам не нужен собственный буфер, и действительно, иметь его было бы опасно, поскольку он, скорее всего, выйдет из синхронизации.

Но вам не нужно устанавливать весь текст редактирования сразу. Из документации :

Кроме того, если элемент управления редактирования является многострочным, получить и установить часть текста элемента управления, вызвав функции-члены CEdit GetLine, SetSel, GetSel и ReplaceSel.

ReplaceSel это то, что вы ищете, я думаю. Хотя в этом тексте говорится о многострочных элементах редактирования, SetSel, ReplaceSel и т. Д. Отлично работают с однострочными элементами управления.

...