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));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值