c++ - 如果启用换行,如何获取第一个显示的文档行号?

标签 c++ scintilla

我使用 Scintilla 的 SCI_GETFIRSTVISIBLELINE 来获取文档的第一行显示。

现在,我通过将 SCI_SETWRAPMODE 设置为 SC_WRAP_WORD 来启用自动换行模式。但是 SCI_GETFIRSTVISIBLELINE 不再匹配文档行。

有没有办法获取第一个显示的文档行(另外,如何知道显示的行是否是换行的一部分)? Scintilla 本身知道这一点,因为正确的行号显示在文本之前(启用 SC_MARGIN_NUMBER 时)。

更新:可见行的第一个文档行可以通过调用SCI_DOCLINEFROMVISIBLE获取,结果为SCI_GETFIRSTVISIBLELINE。然而,检测部分线条仍然是一个问题。

最佳答案

第一个可见行对应的文档行可以通过调用SCI_DOCLINEFROMVISIBLE得到SCI_GETFIRSTVISIBLELINE的结果:DOCLINEFROMVISIBLE(GETFIRSTVISIBLELINE())

第二部分有点棘手,对我来说似乎有点老套:

首先,我用第一行的文档行号调用 SCI_WRAPCOUNT 并获取该行使用的行数。如果 SCI_WRAPCOUNT()>1 它是部分行的候选者。可以使用 SCI_DOCLINEFROMVISIBLE(SCI_GETFIRSTVISIBLELINE() + SCI_WRAPCOUNT() - 1) - SCI_DOCLINEFROMVISIBLE(SCI_GETFIRSTVISIBLELINE()) 计算跳过的行数。

关于c++ - 如果启用换行,如何获取第一个显示的文档行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44864904/

相关文章:

c++ - 准确打印 float

c++ - 是否有适用于 MacOS 的免费 C++ 编译器?

python - 如何在 QScintilla 中实现 SublimeText 的逐级折叠功能

python-3.x - 如何在自制的PyQt GUI中嵌入 'QScintilla'代码编辑器?

c++ - RValue、模板解析和复制构造函数(在 Visual C++ 2010 中)

c++ - "if"条件始终计算为 "true"

c++ - 多边形面积和多面体体积的精确公式

c++ - 如何将 Scintilla 用于 Unicode 字符串

c - Scintilla-无法编译诱饵示例

python - Notepad++ 的 Python 脚本中的可选参数