如何在闪烁中设置边距遮罩
How to set margin masks in Scintilla?
我在理解 Scintilla 标记如何绑定到边距时遇到了问题。假设我想要 3 个边距。第一是线号(这里没有问题),第二是仅箭头标记,第三是仅圆圈制造商。我从文档中知道,我必须指定边距掩码才能将标记绑定到边距,但我不了解如何指定掩码。我尝试了一下,但从未得到想要的结果。(箭头显示在两个边距(第 2 和第 3 个)上,或者没有突出显示符号,而是突出显示该线)。希望有人能启发我如何设置边距掩码。
/* 2nd marker margin -> only arrows */
Call(SCI_SETMARGINTYPEN, 1, SC_MARGIN_SYMBOL);
Call(SCI_SETMARGINWIDTHN, 1, 20);
Call(SCI_SETMARGINSENSITIVEN, 1, 1);
Call(SCI_SETMARGINMASKN, 1, SC_MARK_ARROW); // <=== ???
DefineMarker(1, SC_MARK_ARROW, 0xffffff, 0x0000ff);
/* 3rd marker margin -> only circles */
Call(SCI_SETMARGINTYPEN, 2, SC_MARGIN_SYMBOL);
Call(SCI_SETMARGINWIDTHN, 2, 50);
Call(SCI_SETMARGINSENSITIVEN, 2, 1);
DefineMarker(2, SC_MARK_CIRCLE, 0xffffff, 0x00ff00);
Call(SCI_SETMARGINMASKN, 2, SC_MARK_CIRCLE); // <=== ???
Call(SCI_MARKERADD, 1, 1);
Call(SCI_MARKERADD, 1, 2);
这样,我在边距 1 上得到一个箭头标记,但只有一条突出显示的线,而边距 2 上没有圆圈标记。如果有人能解释如何设置面具,我会很高兴。
有 32 个标记可用,数字 0 到 24 没有预定义的用途。数字 25 到 31 用于折叠,但如果您不需要它,您也可以使用这些数字。
第一步是为要设置的每个标记选择一个数字:假设箭头4
,圆圈5
(可能应该为这些定义一些常量)。
边距掩码是 32 位值。要设置它,您需要翻转与应为该边距启用的每个标记编号相对应的位:
Call(SCI_SETMARGINMASKN, 1, 1 << 4); // 2nd margin, arrow marker
Call(SCI_SETMARGINMASKN, 2, 1 << 5); // 3rd margin, circle marker
然后,您需要定义标记本身:
DefineMarker(4, SC_MARK_ARROW, 0xffffff, 0x0000ff);
DefineMarker(5, SC_MARK_CIRCLE, 0xffffff, 0x00ff00);
因此,您最终可以将它们添加到特定行中:
Call(SCI_MARKERADD, 1, 4);
Call(SCI_MARKERADD, 1, 5);
相关文章:
- 内置函数可查看CPP中的成员变量
- QTableView:endMoveRows在模型中重置水平页眉大小
- 处理闪烁窗口事件
- 具有非整数边容量的最大流量的Dinic算法
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 用C++程序计算圆锥体的体积、球体的体积、八边形的面积和两点之间的距离
- 如何避免LED在循环状态变化中闪烁?
- 是否有内置方法可以强制转换为不同的基础类型,但保留常量限定符?
- qprint 和 QTextDocument 中的表格边距使用 html 作为输入
- 如何在调整大小时更新WC_EDIT控制边距
- 如何在编程中获取QTableWidgetItem的边距宽度
- 如何正确打印带有边距的长字符串 (setw())
- 101 Qt 样式表边距填充黑客指南在C++。设置填充不起作用
- 如何在闪烁中设置边距遮罩
- 在Visual Studio中对齐代码/代码边距
- QGraphics 中不需要的边距与滚动条视图
- Rihedit文本边距
- QSplitter显示两个小部件之间的分隔符或边距
- Qt:如何在QTextEdit中设置段落的顶边距
- C++窗口中球拍的边距错误