如何在 Scintilla 中居中对齐文本?

How to center-align text in Scintilla?

在我的应用程序中,我有一个自定义控件,它通过 scintilla.dll.

实现语法突出显示

There are all sorts of codes用于设置控件中文本的样式。

但是,我搜索了又搜索,还是想不出如何在控件中居中对齐文本。

文本样式居中对齐的 scintilla 代码是什么?

scintilla 中没有 "center-align" 命令。

但是,要使文本居中,请执行以下操作:

  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)