完美主义

QQ:418104681 上帝要你死在追求完美的道路上

Scintilla 主要类和控件的消息

 

主要类

CellBuffer

保存文本,样式信息,恢复堆栈,标签,代码叠起结构等信息

ContractionState

 

Document

包含CellBuffer和一些高度抽象操作,管理样式处理。

Editor

使用ContractionState, Indicator, LineMarker, Style, ViewStyle来显示文档KeyMapContractionState同样在这里使用。

Indicator

 

LineMarker

 

Style

 

ViewStyle

 

KeyMap

 

ScintillaBase

Editor的子类,增加了调用提示和自动完成等功能,使用类CallTipAutoComplete

CallTip

 

AutoComplete

 

Scintilla文档的每个字符都紧跟关联的样式信息。一个字节的字符信息和一个字节的样式信息作为一个单位。样式信息高3位是指示器,低5位是索引号。索引号索引一个存放样式的数组。这样就可以表示32种基础样式,几乎包含所有语言的样式。三个无关指示器可以一次显示语法错误,非法命名,和缩进错误。关于样式的位可以通过SCI_SETSTYLEBITS来改变最多其中7位,剩下的位用于指示器。

字符位置信息以0开始计数,至nLen-1,中文的字符是两个字符为一个文字,这样计数就有误了(DBCS

 

Scintilla的消息都是以SCI_GETxxx或者SCI_SETxxx来命名的

一.文本取回与修改

主要消息有:

 

 

1SCI_GETTEXT(int length, char *text)

此函数可以取得控件中的字符串存到一个缓冲区,这样就可以保存文档了。流程是使用SCI_GETLENGTH获得字符串的长度然后根据取得的长度申请一个缓冲区,再利用该消息取得文本,然后就可以保存文本了,同时需要利用SCI_SETSAVEPOINT标记文本已保存了。

 

做了例子果然是可以运行的,不知道作者是如何制作这样一个控件的。我对他的内部运行机制很感兴趣,想仔细看一些具体的代码,而不是仅仅使用它。另外发现API使用的字符是宽字符,这一点很令人讨厌。

另外获取处理函数的过程用了上次写的typedef的用法,改一下看上去就清晰多了

typedef int (*EditorSendFun)(void*,int,int,int);
void* ptr;
EditorSendFun editsendmessage;

posted on 2008-07-17 18:43 沈臻豪(foxtail) 阅读(154) 评论(2)  编辑 收藏 引用 所属分类: Windows程序设计

评论

# re: Scintilla 主要类和控件的消息 2008-08-10 11:41 megax

其实制作编辑器不难,难的是制作一个平均性能很高的编辑器。Scintilla的代码不错,几本思路几乎和我的一样。当然,我可没有抄它的。Scintilla在win上不支持native unicode,我以前想修改来着,后来还是没做,我几年前就做megax了,那时候Scintilla还不像现在这么出名。Scintilla最大的缺点是它是用lexx来做的此法分析,这么做会带来很高的正确性,扩展性却很低。如果你想做的你可以读读这篇文章http://www.catch22.net/tuts/,介绍了一个基础编辑器的实现,一些更高级的功能像高速自动换行等,就得好好琢磨琢磨了  回复  更多评论   

# re: Scintilla 主要类和控件的消息 2008-08-10 16:39 foxtail

很不错的资料 谢谢@megax
  回复  更多评论   


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航:



公告

“我们要的是三好学生.”洪小文笑言,数学好,编程好,态度好.当然,仅仅三好也是不够的,“我们只要1%的人.我们一定要找最聪明、最优秀、最顶尖的人才.”

导航

<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

相册

C++名库

Friend

GUI和设计方法

Mathematics

Problem

STL网站

工具

精品网站

其他

语言

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

60天内阅读排行