Как выровнять текст по центру в Scintilla?

В моем приложении у меня есть пользовательский элемент управления, который реализует подсветку синтаксиса через scintilla.dll.

Существуют всевозможные коды для установки стиля текста в элементе управления.

Тем не менее, я искал и искал и не могу понять, как выровнять текст по центру в элементе управления.

Какой код сцинтиллы для выравнивания по центру стиля текста?

1 ответ

Решение

В сцинтилле нет команды выравнивания по центру.

Вот что нужно сделать, чтобы центрировать текст:

  1. Получить текст из элемента управления
  2. Знать, какой стиль используется
  3. использование TEXTWIDTH (2276) чтобы определить ширину текста, используя этот стиль
  4. Используйте controlwidth /2 - textwidth /2 для определения местоположения левого поля
  5. использование SETMARGINLEFT (2155) переместить левое поле

Обратите внимание, что стиль по умолчанию 32,

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

В Autohotkey это может выглядеть так:

guicontrolget, editor
guicontrolget, editor, pos
textwidth := hwndeditor.2276(32,editor)
setplace := (editorW /2) - textwidth /2
hpeditor.2155(0,setplace)
Другие вопросы по тегам