我正在使用 CRichEditCtrl 来编辑计算机语言,并且在对其进行每次更改时,我都会在当前文本行(由 LineFromChar(-1) 报告)上调用 SetSelectionCharFormat 以突出显示语法。(例如:绿色的注释,大字体的部分标题,红色的编译错误等)请注意,这种语言没有多行功能,例如 C 注释,其中在一行上键入 /* 会使以下行成为也有评论;对于任何给定的字符更改,我只需要更改当前行的颜色。
一切看起来都很好。
不过也有一些奇怪的问题。一种是,当从其他地方选择多行文本并粘贴时。我的 OnUpdate() 被调用,但天真地假设唯一可能需要重新格式化的行是 LineFromChar() 返回的行。这在用户逐个字符输入时就足够了,但这意味着在收到多行粘贴后,程序只会重新格式化粘贴文本的最后一行。 它怎么知道插入的开始在哪里?