Scintilla笔记(3)

Scintilla笔记(3)
Scintilla支持代码折叠
目前,基本上所有的IDE都提供了代码折叠功能,Scintilla为我们也提供了设置代码折叠的功能,用户可以根据当前语言特点完成代码折叠。
实现代码折叠功能主要分为四步:
一、显示折叠的边距

m_ScintillaEdit.SetMarginWidthN(2, margin_width); // 
二、显示折叠属性

    m_ScintillaEdit.SetMarginSensitiveN(1, TRUE);
    m_ScintillaEdit.SetMarginSensitiveN(2, TRUE);

    m_ScintillaEdit.SetMarginTypeN(2, SC_MARGIN_SYMBOL);
    m_ScintillaEdit.SetMarginMaskN(2, SC_MASK_FOLDERS);
    m_ScintillaEdit.SetFoldLevel(2, SC_MASK_FOLDERS);

三、设置是否显示折叠


#define     SETSCINTILLAPROPERTY(KEY, VALUE)        m_ScintillaEdit.SetProperty(KEY, VALUE)

// 设置折叠
    SETSCINTILLAPROPERTY(L"fold", L"1");
    SETSCINTILLAPROPERTY(L"fold.compact", L"1");
    SETSCINTILLAPROPERTY(L"fold.comment", L"1");
    SETSCINTILLAPROPERTY(L"fold.preprocessor", L"1");

四、设置折叠的样式

    //折叠标记
    struct FoldMarker
    {
        int Marker;
        int MarkType;
    };

    //Setup fold markers
    FoldMarker FoldMarks[] =
    {
        { SC_MARKNUM_FOLDEROPEN, SC_MARK_BOXMINUS, },
        { SC_MARKNUM_FOLDER, SC_MARK_BOXPLUS, },
        { SC_MARKNUM_FOLDERSUB, SC_MARK_VLINE, },
        { SC_MARKNUM_FOLDERTAIL, SC_MARK_LCORNER, },
        { SC_MARKNUM_FOLDEREND, SC_MARK_BOXPLUSCONNECTED, },
        { SC_MARKNUM_FOLDEROPENMID, SC_MARK_BOXMINUSCONNECTED, },
        { SC_MARKNUM_FOLDERMIDTAIL, SC_MARK_TCORNER, },
    };

    for (int i = 0; i < sizeof(FoldMarks) / sizeof(FoldMarks[0]); i++)
    {
        m_ScintillaEdit.MarkerDefine(FoldMarks[i].Marker, FoldMarks[i].MarkType);
        m_ScintillaEdit.MarkerSetFore(FoldMarks[i].Marker, RGB(255, 255, 255));
        m_ScintillaEdit.MarkerSetBack(FoldMarks[i].Marker, RGB(128, 128, 128));
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastColoredTextBox 是一个用于 WinForm 开发的开源控件,它提供了一个高性能的文本编辑框,适用于需要在应用程序中嵌入文本编辑功能的场景。FastColoredTextBox 支持语法高亮、文本选中、复制、粘贴和撤销操作等常用编辑功能,并提供了丰富的 API 用于控制文本显示和编辑行为。 Scintilla 是一个跨平台的文本编辑组件,它由 C++ 编写,并以静态库的形式发布。Scintilla 提供了丰富的功能和定制选项,包括语法高亮、自动补全、代码折叠、括号匹配等。Scintilla 还支持多个语言的编辑环境,如 C、C++、C#、Python 等,并且可以通过插件进行扩展。 FastColoredTextBox 和 Scintilla 在功能和用途上类似,都是用于文本编辑的控件。它们都支持语法高亮,但 FastColoredTextBox 更适合 WinForm 应用程序的开发,而 Scintilla 则更适合跨平台的开发,因为它的底层代码是用 C++ 编写的。 FastColoredTextBox 和 Scintilla 在用法上也有一些差异。FastColoredTextBox 使用起来相对简单,只需要把控件拖放到窗体上即可使用,并且提供了一些常用的属性和方法用于控制编辑行为。而 Scintilla 的使用稍微复杂一些,需要编写一些代码来配置和控制编辑器的行为,但它的定制性更高,可以根据需求进行深度定制。 总之,FastColoredTextBox 和 Scintilla 都是用于文本编辑的控件,具有丰富的功能和定制选项,可根据实际需求选择使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值