
Windows版本的Scintilla,是一个标准的Windows组件,用户可以通过SendMessage函数发送消息,与其进行交互。SendMessage函数接口如下所示:
LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
GTK+版本的Scintilla,采用和Windows版本相似的方式,进行消息传递。scintilla下面的介绍,将以Windows版本为主。
Scintilla提供了大量的消息API,每个消息可以带有0个、1个或2个参数。SendMessage函数中的消息,通常带有2个参数:wParam和lParam,因此对于没有使用的参数,强烈建议将其设置为0,以保证与将来版本的兼容。对于大多数SCI_SETxxxxx设置类消息,都会有一个对应的SCI_GETxxxxx查询消息。
参数类型
消息中的参数类型,如下表所示:
参数类型
参数说明
bool
0表示FALSE,1表示TRUE
int
32位有符号整数
const char*
常量字符串指针,字符串可能以0结尾,或者通过另一个参数指明长度
char*
字符缓冲区指针,Scintilla将会用查询到的字符数据进行填充。在一些情况下,通过另一个参数,指明了缓冲区大小;在另一些情况下,你必须保证缓冲区足够大,可以容纳查询到的字符数据。如果你传入了一个空指针0,消息将返回查询到的字符数据大小。
colour
RGB格式的颜色值。每种颜色取值0 - 255,red、green、blue按如下方式组合,得到colour值:colour = red | (green << 8) | (blue << 16)。0x000000,黑色;0xff0000,蓝色;0x00ff00,绿色;0x0000ff,红色;0xffffff,白色。
alpha
alpha通道值,表示颜色的半透明度,取值范围为:0(完全透明,SC_ALPHA_TRANSPARENT)- 255(不透明,SC_ALPHA_OPAQUE)。scintilla值256(C_ALPHA_NOALPHA)表示不使用alpha通道。并不是所有平台都支持alpha通道,并且只有一部分消息实现了alpha效果。消息默认alpha值为256,不使用alpha通道。
<unused>
未使用参数,强烈建议将其设置为0,以保证与将来版本的兼容。
数据类型
在Scintilla中,使用了如下几种数据结构:
CharacterRange
字符范围数据结构,与WIN32数据结构CHARRANGE相同。
struct CharacterRange {
long cpMin;
long cpMax;
};
TextRange
文本范围数据结构,主要用于从Scintilla组件获取指定范围的文本,与WIN32数据结构TEXTRANGE相同。
struct TextRange {
struct CharacterRange chrg;
char *lpstrText;
};
TextToFind
搜索文本数据结构,与WIN32数据结构FINDTEXTEX相同。
struct TextToFind {
struct CharacterRange chrg; // 搜索范围
char *lpstrText; // 搜索文本
struct CharacterRange chrgText; // 匹配文本
};
SCNotification
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-53178-1.html
因为直接守住小日本的出口要道