如果启用换行,如何获得第一个显示的文档行号?

时间:2017-07-01 19:58:21

标签: c++ scintilla

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

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

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

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

1 个答案:

答案 0 :(得分:1)

第一条可见行的相应文档行可以通过SCI_DOCLINEFROMVISIBLE调用SCI_GETFIRSTVISIBLELINE得到DOCLINEFROMVISIBLE(GETFIRSTVISIBLELINE())SCI_WRAPCOUNT

第二部分有点棘手,对我来说似乎有些苛刻:

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