Scintilla 在MFC中的简易使用(动态、静态)

Scintilla 在MFC中的简易使用(动态、静态)

 Scintilla是一个开源的源代码编辑组件。在这里记录下它在MFC中的简易使用。

Scintilla 3.24在MFC中的使用(动态、静态) 一文使用的别人封装过的类。至于怎样去封装,没有详细说明。

下面将简单介绍在MFCSDI框架下如何封装Scintilla,提供一个玩具级的演示示例。本文使用的是Scintilla 3.2.5

1.      新建一MFC SDI 项目,如:SdiScintillaMFC


2.      (动态、静态) 使用 Scintilla 代码初始化。

在 SdiScintillaMFC 中添加如下代码:

[cpp]  view plain copy
  1. HMODULE m_hSciLexerDll;  
[cpp]  view plain copy
  1. #ifdef STATIC_BUILD_SCI  
  2. #include "Scintilla.h"  
  3. #endif  
[cpp]  view plain copy
  1. BOOL CSdiScintillaMFCApp::InitInstance()  
  2. {  
  3. #ifdef STATIC_BUILD_SCI  
  4.     Scintilla_RegisterClasses(AfxGetInstanceHandle());  
  5. #else  
  6.     m_hSciLexerDll = NULL;  
  7.     m_hSciLexerDll = LoadLibrary(_T("SciLexer.dll"));  
  8.     if (NULL == m_hSciLexerDll)  
  9.     {  
  10.         AfxMessageBox(_T("LoadLibrary SciLexer.dll failure..."));  
  11.         return FALSE;  
  12.     }  
  13. #endif  
  14. …  
  15. }  
  16.   
  17. int CSdiScintillaMFCAp::ExitInstance()   
  18. {  
  19.     // TODO: Add your specialized code here and/or call the base class  
  20. #ifdef STATIC_BUILD_SCI  
  21.     Scintilla_ReleaseResources();  
  22. #else  
  23.     if (m_hSciLexerDll != NULL)  
  24.     {     
  25.         ::FreeLibrary(m_hSciLexerDll);  
  26.     }  
  27. #endif  
  28.       
  29.     return CWinApp::ExitInstance();  
  30. }  
3.      增加一Scintilla封装类,继承自CWnd,如ScintillaCtrl

增加如下函数

[cpp]  view plain copy
  1. BOOL ScintillaCtrl::Create(DWORD dwExStyle,const RECT& rect, CWnd* pParentWnd)  
  2. {  
  3.     // TODO: 在此添加专用代码和/或调用基类  
  4.     BOOL bRet;  
  5.     bRet= CWnd::CreateEx(dwExStyle,_T("Scintilla"), _T(""),  
  6.         WS_CHILD | WS_VISIBLE, rect,pParentWnd, IDC_STATIC);  
  7.   
  8.     return bRet;  
  9. }  
  10.   
  11. /  
  12. // @mfunc init the view with reasonable defaults  
  13. // @rvalue void | not used  
  14. //  
  15. void ScintillaCtrl::Init()  
  16. {  
  17.     // clear all text styles  
  18.     SendMessage(SCI_CLEARDOCUMENTSTYLE, 0, 0);  
  19.     // set the number of styling bits to 7 - the asp/html views need a lot of styling - default is 5  
  20.     // If you leave the default you will see twiggle lines instead of ASP code  
  21.     SendMessage(SCI_SETSTYLEBITS, 7, 0);  
  22.     // set the display for indetation guides to on - this displays virtical dotted lines from the beginning of  
  23.     // a code block to the end of the block  
  24.     SendMessage(SCI_SETINDENTATIONGUIDES, TRUE, 0);  
  25.     // set tabwidth to 4  
  26.     SendMessage(S
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值