Scintilla! 一个超棒的免费源代码编辑控件收藏

2024-01-07 12:08

本文主要是介绍Scintilla! 一个超棒的免费源代码编辑控件收藏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 Scintilla! 一个超棒的免费源代码编辑控件收藏

新一篇: 免费开源的编辑器 - SciTE  | 旧一篇: CEdit & CRichEdit 使用技巧

<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

Scintilla是一个免费的源代码编辑控件,它完全开放源代码,并且提供一个license允许用户自由地将它用在开源软件或是商业软件中。


我是在做毕业课题的时候发现的这个编辑控件,使用后发现它实在是强大和稳定,作为源代码编辑控件,我们能在 普通的的文本编辑控件中能看到的功能,Scintilla都完全能够实现,而且,它还能够提供很多编辑和调试源代码时有用的特殊功能。包括语法高亮显示, 错误指示,代码自动完成以及代码提示等。而且在左边的空白处(margin),可以显示调试代码中非常有用的显示断点以及显示当前运行行等功能。而且,自 定义风格的功能比其他大部分编辑器控件都开放,它允许用户自定义不同类型下的字体,是否粗体,是否斜体,前景色和背景色,支持大量的字体。举个例子,在设 置C/C++编辑模式后,你可以定义注释语句类型的颜色,字体,大小等等,同样,可以自定义关键字类型的颜色,字体,大小……诸如此类,这样给用户极大的 配置的自由。


据Scintilla的网站上发布的消息,Scitilla将在以后的开发中,更加灵活,健壮,更好地表现在.Net和java虚拟机中运行,就这一点,可以看出Scitilla项目就是一个非常有活力的项目,其开发团队对它非常有激情,这也使我们——这些用户从中受益。


据作者介绍,开发Scintilla的动机是来自他对Richedit的失望,在Richedit中,样式 的改变被看作是文档的一种改变,从而会被记录到undo的堆栈中,并且设置的文档对象的修改标记。这对源代码编辑是非常不合适的,改变关键字类型的颜色或 是运算符的颜色,这不应该看作是文档的修改,也不应该能够通过undo/redo来返回/前进。我对此深有感触,如果是Richedit来做源代码编辑的 控件,那将有太多的东西需要自己编写代码实现了,选择Scintilla,将是一个明智的选择,省时,省力,安全,可靠。


Scintilla目前提供了Win32版本和Linux版本。在Linux中使用的是GTK+,已经在 Windows95,nt4.0, Windows2000, windows XP以及RedHat Linux8和9中的GTK+1.2和2.0中测试运行正常。这是一个跨平台的控件,也是我对其非常欣赏的原因之一。下面我的主要论述的还是在 windows + VC下如何使用这个控件,但是其他平台/编译工具下也大同小异,触类旁通吧。

 

简介:

 

Scintilla的windows版本就是一个窗体控件。它的主要编程接口是通过窗体 消息来传送的。你要实现什么功能,向控件发送一个消息就可以了,当需要从控件得到什么信息,接受WM_NOTIFY消息即可,可以从它带的参数中获得大量 当前控件的信息,比如是否已经修改文字了,是否正在点击左边的边框等等。但是,实际上在MFC编程中,通过消息的方式来控制控件还是非常麻烦的,因为这些 消息的大部分都是自定义消息,不便于记忆。所以一般的做法就是将这些消息的调用封装成一个窗体类,这样调用方便多了。除了能实现一般编辑控件能实现的功能 外,scintilla还能实现语法高亮,代码折叠,书签,自动完成,语句提示等等功能。你完全可以不用学习标准编辑控件CEDIT或者是 RichEdit,scintilla提供了协调一致的API口,这些都是它的优点之处。

事实上,scintilla开发组同时也用这个控件开发了一个编辑软件SciTE,它百分百的实现了 scintilla的全部功能,如果你对scintilla非常感兴趣,但又不知它到底能做到那些功能的活,当一个SciTE,使用一下就完全明白了。同 时,SciTE也是开源软件,学习它的代码,就是学习scintilla的使用方法。在scintilla的文档中,就说明了,这个文档只是独立地讲解各 个消息的使用方法,功能和参数,并不能讲解如何把它们连接起来组成一个实用的编辑器,要想知道如何实现某些特定功能,还是看看SciTE是如何实现的。我 也看过SciTE的代码,可读性还是不错的,可惜我是没有耐心的人,也就读了几个函数,大体了解了一下,如果你想用好这个控件,多读读SciTE的源码还 是不错的。

scintilla的消息就用SendMessage函数发送,它提供两个头文件:Scintilla.h和 SciLexer.h,消息号的宏定义都在这里,而且还有很多要用到的结构体,类型等等的定义。消息带的两个参数wParam和lParam是要经常用到 的,也许会用到一个,两个,或者无需参数。但建议你最好在使用的时候把不用的参数都赋予0值,因为如果以后扩充消息功能,用到了某个参数,赋值能防止程序 的崩溃。

通常参数的类型如下:
bool int const char* char* colour <unused>

其他的类型不用多说,至于color类型,是用于描述颜色的,它实际上就是一个整数,计算方法是:red| (green << 8)|(blue << 16), red,green,blue是8位2进制数,也就是2位16进制数。很容易就能实现256色的调配。至于<unused> ,就是说这个参数在这个消息中不用,可以赋为0值。

下面的讲解的重点是放在VC+MFC的环境中,因为我一直在这个环境下开发东西,要是用SDK编程也一样的,只是用 到了更多的API,至于编译器,VC也好,GCC也好,我觉得没什么大问题,我就曾经用GDB调试SciTE的源码,来了解scintilla如何使用 的,Linux平台下的GTK+编程我没尝试过,从文档上看,也是用消息的方式来控制控件,用接受消息的方式来获得控件的信息。


下面我就如何封装scintilla成为一个窗体类,如何在程序中使用它的功能一一讲解,水平有限,而且现在还在上学中,可能写得比较慢,呵呵,谅解。

这篇关于Scintilla! 一个超棒的免费源代码编辑控件收藏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/579870

相关文章

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank&nbsp;正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

轻松录制每一刻:探索2024年免费高清录屏应用

你不会还在用一些社交工具来录屏吧?现在的市面上有不少免费录屏的软件了。别看如软件是免费的,它的功能比起社交工具的录屏功能来说全面的多。这次我就分享几款我用过的录屏工具。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  这个软件的操作方式非常简单,打开软件之后从界面设计就能看出来这个软件操作的便捷性。界面的设计简单明了基本一打眼你就会轻松驾驭啦

10个好用的AI写作工具【亲测免费】

1. 光速写作 传送入口:http://u3v.cn/6hXWYa AI打工神器,一键生成文章&ppt 2. 讯飞写作 传送入口:http://m6z.cn/5ODiSw 3. 讯飞绘文 传送入口:https://turbodesk.xfyun.cn/?channelid=gj3 4. AI排版助手 传送入口:http://m6z.cn/6ppnPn 5. Kim

分享5款免费录屏的工具,搞定网课不怕错过!

虽然现在学生们不怎么上网课, 但是对于上班族或者是没有办法到学校参加课程的人来说,网课还是很重要的,今天,我就来跟大家分享一下我用过的几款录屏软件=,看看它们在录制网课时的表现如何。 福昕录屏大师 网址:https://www.foxitsoftware.cn/REC/ 这款软件给我的第一印象就是界面简洁,操作起来很直观。它支持全屏录制,也支持区域录制,这对于我这种需要同时录制PPT和老师讲

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after