Сколько символов я должен обновить в обычном потоке программы редактирования текста?

#c #winapi #win32gui

#c #winapi #win32gui

Вопрос:

Итак, я создаю этот текстовый редактор с нуля, используя пользовательский элемент управления edit. На данный момент я обновляю видимую часть текущей строки, в которой содержится курсор. В целом это работает нормально, но я пытался печатать на нем очень быстро, и я замечаю, что он мерцает (только один или два раза и только для очень длинных строк). Но это небольшое мерцание как-то нехорошо.

  • Итак, мне было интересно, должен ли я обновлять только два символа одновременно (текущий символ и предыдущий символ). 2 символа, потому что, если я не удалю / не обновлю предыдущий символ, останется артефакт от курсора в предыдущей позиции.
  • Я также анализирую свой код, чтобы проверить, есть ли узкое место в производительности или неаккуратный код. В связи с этим я заметил, что я передаю много `ДЕСКРИПТОРОВ» в Windows и прочее. Мне было интересно, будет ли иметь значение, если я передам их вместо этого в качестве ссылок. Я знаю, что дескрипторы также являются 32-разрядными значениями, поэтому я не уверен, что это приведет к увеличению производительности.

Спасибо!

Devjeet

Комментарии:

1. При использовании ссылок произойдет крайне незначительное снижение производительности, поскольку вы добавляете один уровень косвенности. Что касается вашей проблемы, вы выполняете двойную буферизацию?

2. Нет, я этого еще не сделал

Ответ №1:

Нарисуйте содержимое вашего элемента управления редактором, используя memDC. В этом примере используется MFC, но идея не зависит от него.