CBCGPEditCtrl实现编辑器功能


        BCGControlBar有一个能够实现编辑器的类CBCGPEditCtrl,自带的例子比较详细的介绍了使用方法,下面自己记录一些备忘,使用的是12.0版本。

1.新建MFC应用程序,名称Test_BcgEdit,在"下一步"中选择"多个文档","MFC 标准","使用Unicode库"(不然处理汉字有问题),点"完成";
2.配置BCGControlBar的库目录;
3.在"stdafx.h"文件里面添加以下代码:

1
#include "BCGCBProInc.h" 
4.把生成的视图类CTest_BcgEditView基类CView,改成 CBCGPEditView,相应的实现文件也要改变;
5.编译运行如下图所示:

6.根据BCGControlBar帮助文件规定的XML格式,具体描述如下:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<SETTINGS>                                        <!-- 以这个标签开始 --
    <OPTIONS> 
        <WordDelimeters></WordDelimeters>        <!-- 单词分隔符 --
        <SpecialDelimiters></SpecialDelimiters>    <!-- 特殊的分隔符列表,使用Ctrl+Left或Ctrl+Right跳跃 -->  
        <IntelliSenseChars></IntelliSenseChars>    <!-- 智能感知所使用的符号列表 --
    </OPTIONS> 
    <COLOR_DATA> 
        <EditTextColor></EditTextColor>            <!-- 指定文本的前景色 --
        <EditBackColor></EditBackColor>            <!-- 指定文本的背景色 --
        <SelTextColor></SelTextColor>            <!-- 所选文本的前景色 --
        <SelBackColor></SelBackColor>            <!-- 所选文本的背景色 --
        <KEYWORDS> 
            <Color></Color>                        <!-- 关键字前景色 --
            <BackColor></BackColor>                <!-- 关键字背景色 --
            <CaseSensitive></CaseSensitive>        <!-- 是否大小写敏感 --
            <Keyword></Keyword>                    <!-- 关键字 --
            <Keyword></Keyword> 
            ... 
            <Keyword></Keyword> 
        </KEYWORDS> 
        <WORDS>                                    <!-- 也是关键字,但可单独指定颜色 --
            <WORD> 
                <Val></Val>                        <!-- 关键字 --
                <Color></Color>                    <!-- 关键字前景色 --
                <BackColor></BackColor>            <!-- 关键字背景色 --
                <CaseSensitive></CaseSensitive>    <!-- 是否大小写敏感 --
            </WORD> 
            ... 
            <WORD> 
                ... 
            </WORD> 
        </WORDS> 
        <BLOCKS>                                <!-- 颜色块列表 --
            <BLOCK> 
                <Start></Start>                    <!-- 指定打开块格局 --
                <End></End>                        <!-- 指定关闭块格局,单行注释为空 --
                <Color></Color>                    <!-- 块前景色 --
                <BackColor></BackColor>            <!-- 块背景色 --
                <WholeText></WholeText>            <!-- 块是否多行的,只能定义一个块的WholeText为真 --
                <CaseSensitive></CaseSensitive>    <!-- 是否大小写敏感 --
            </BLOCK> 
            ... 
            <BLOCK> 
                ... 
            </BLOCK> 
        </BLOCKS> 
    </COLOR_DATA> 
</SETTINGS> 
7.写个最简单的XML文件,名为 edit_cpp.xml,放在Debug目录下,内容为:
1
2
3
4
5
6
7
8
<SETTINGS> 
    <COLOR_DATA> 
        <KEYWORDS>             
            <Color>0000ff</Color> 
            <Keyword>int</Keyword> 
        </KEYWORDS> 
    </COLOR_DATA> 
</SETTINGS> 
8.在视图类 CTest_BcgEditView的初始化函数 OnInitialUpdate()里面,添加成如下代码:
1
2
3
4
5
6
7
void CTest_BcgEditView::OnInitialUpdate() 

    CBCGPEditView::OnInitialUpdate(); 
 
    const CString strXMLFileName = _T("edit_cpp.xml"); 
    GetEditCtrl()->LoadXMLSettings(strXMLFileName); 
9.编译运行,如下图所示:

10.其他的XML配置信息参考BCG自带的示例,下面的一些函数能够开启一些功能:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    GetEditCtrl()->EnableAutoOutlining(TRUE);    //开启自动大纲,默认FALSE 
    GetEditCtrl()->EnableGradientMarkers(TRUE);    //开启渐变书签,默认FALSE 
    GetEditCtrl()->EnableIntelliSense(TRUE);    //开启智能感知功能,默认FALSE 
    GetEditCtrl()->EnableOutlining(TRUE);        //开启大纲,默认FALSE 
    GetEditCtrl()->EnableToolTips(TRUE);        //开启文本提示功能,默认FALSE 
    GetEditCtrl()->EnableUndoCharMode(TRUE);    //开启字符撤销模式,默认FALSE 
    GetEditCtrl()->EnableOutlineParser(TRUE);    //开启大纲解析 
    GetEditCtrl()->EnableHyperlinkSupport(TRUE);//开启超链接支持 
 
    GetEditCtrl()->SetLineNumbersMargin(TRUE, 30);        //是否显示行号边距 
    GetEditCtrl()->SetOutlineMargin(TRUE, 20);            //是否显示大纲边距 
     
    GetEditCtrl()->m_bColorHyperlink = TRUE;            //开启超链接进行颜色处理 
    GetEditCtrl()->m_bEnableCurrentLineCopy = TRUE;    //开启复制当前行,未选中当前行时 
    GetEditCtrl()->m_bEnableSymSupport = TRUE;        //开启符号支持,可以实现转义表情图片 
    GetEditCtrl()->m_bEnableWholeTextCopy = TRUE;        //开启复制全部文本,未选中任何区域时 
     
    GetEditCtrl()->m_clrBack = RGB(255255255);            //编辑框背景色 
    GetEditCtrl()->m_clrBackLineNumber = RGB(255255255);//行号背景色 
    GetEditCtrl()->m_clrBackOutline = RGB(255255255);    //大纲折叠区域背景色(+-方框) 
    GetEditCtrl()->m_clrBackSelActive = RGB(49106197);    //选中文本块有输入焦点时的背景色 
    GetEditCtrl()->m_clrBackSelInActive = RGB(122150223);//选中文本块无输入焦点时的背景色 
    GetEditCtrl()->m_clrBackSidebar = RGB(227227227);    //侧边栏背景色 
    GetEditCtrl()->m_clrHyperlink = -1;                        //超链接颜色,-1表示默认 
    GetEditCtrl()->m_clrLineOutline = RGB(128128128);    //大纲线框颜色 
    GetEditCtrl()->m_clrText = GetSysColor(COLOR_WINDOWTEXT);//编辑框文本前景色 
    GetEditCtrl()->m_clrTextLineNumber = RGB(0130132);    //行号文本颜色 
    GetEditCtrl()->m_clrTextSelActive = RGB(255255255);    //选中文本块有输入焦点时的前景色 
    GetEditCtrl()->m_clrTextSelInActive = RGB(216228248);    //选中文本块有输入焦点时的前景色 
 
    GetEditCtrl()->m_nLeftMarginWidth = 20;                    //左边距宽度(显示书签的位置)默认20 
    GetEditCtrl()->m_nLineVertSpacing = 1;                    //文本行之间的额外间距 
    GetEditCtrl()->m_nOutlineMarginWidth = 20;                //大纲边距 
    GetEditCtrl()->m_nTabSize = 4;                            //Tab制表符大小     
     
    CString strText; 
    GetEditCtrl()->ExportToHTML(strText);            //导出HTML到内存缓冲区 
    GetEditCtrl()->ExportToRTF(strText);            //导出RTF到内存缓冲区 
 
    GetEditCtrl()->FindText(strText);                //搜索文本 

11.默认的滚动条有点长,要修改滚动条可以派生自CBCGPEditCtrl,然后重载CBCGPEditView::CreateEdit函数,具体参考"ChatEditor"示例。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值