当前位置:首页 > 代码 > 正文

scintilla源代码(scintilla中文文档)

admin 发布:2022-12-19 23:27 167


本篇文章给大家谈谈scintilla源代码,以及scintilla中文文档对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何使用Scintilla编辑控件

如何创建 Scintilla 编辑控件?

首先载入 Scintilla 控件的动态库,如下:

hmod = LoadLibrary("SciLexer.DLL");

if (hmod == NULL)

{

MessageBox(hwndParent,

"The Scintilla DLL could not be loaded.",

"Error loading Scintilla",

MB_OK | MB_ICONERROR);

}

如果动态库成功载入,该动态库就已经为我们注册了一个新的 window class。

这个名称为 "Scintilla" 的新 window class 就是 Scintilla 编辑控件。

好了,我们已经可以像使用其他的windows控件一样来使用这个控件了:

hwndScintilla = CreateWindowEx(0, "Scintilla", "",

WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_CLIPCHILDREN,

10, 10, 500, 400, hwndParent, (HMENU)GuiID, hInstance, NULL);

请注意这个新的 window class 的名称是 "Scintilla"。到这里,我们实际上已经在我们的 windows 程序中引入了这个 Scintilla 控件。

怎样操作 Scintilla 控件呢?

简单地说,我们可以通过直接向 Scintilla 发送 commands 来操作该控件。有两种方式,一种方式使用起来比较简单而另外一种方式在执行速度上有优势。

操作 Scintilla 控件的简单的方法

这种方法和我们使用其他的 windows 控件没什么两样。我们可以发送消息给 Scintilla 控件,然后接受来自 Scintilla 控件的通知(notifications )消息(请注意, Scintilla 控件是将这些通知消息都发送到其父窗体上);

Scintilla 能够识别每一个 command,我们可以直接用 SendMessage 函数来向 Scintilla 控件发送消息:

SendMessage(hwndScintilla, sci_command, wparam, lparam);

譬如:

SendMessage(hwndScintilla, SCI_CREATEDOCUMENT, 0, 0);

有些 commands 是有返回值的,而另外一些命令的参数没有用到,这些参数需要设置成 NULL。

操作 Scintilla 控件的快速的方法

这里所说的快速调用的方法,其实就是在我们的代码中直接调用 Scintilla 编辑控件的消息处理函数。

Scintilla 为我们提供了一个消息处理函数,我们可以获取到这个消息处理函数,然后直接调用这个函数函数来执行相应的 commands。这种方式要比使用 SendMessage 发送消息的处理速度要快。

首先,我们可以通过 SCI_GETDIRECTFUNCTION 和 SCI_GETDIRECTPOINTER 这两个命令来获取到上面提到的消息处理函数和该函数所需要的第一个参数。获取这两个指针我们必须通过 SendMessage :)(译者注:新版本的Scintilla 已经在动态库中导出了相应的函数)

整个过程如下:

int (*fn)(void*, int, int, int);

void * ptr;

int canundo;

fn = (int (__cdecl *)(void *, int, int, int))SendMessage(

hwndScintilla, SCI_GETDIRECTFUNCTION, 0, 0);

ptr = (void *)SendMessage(hwndScintilla, SCI_GETDIRECTPOINTER, 0, 0);

canundo = fn(ptr, SCI_CANUNDO,0,0);

上面的 "fn" 就是 Scintilla 控件的消息处理函数, "ptr" 就是我们每次调用消息处理函数必须用到的第一个参数。剩下的几个参数分别是 Scintilla 的 command(消息、命令) 和该 Command 的两个可选参数。

如何接受 Scintilla 的通知消息?

一旦某个事件触发了,而且 Scintilla 控件认为需要通知用户,它就会向该控件的父窗体发 WM_NOTITY 消息。 我们收到这个消息后需要根据该消息的实际数据结构进行处理。

我们可以在 Scintilla 的父窗体的消息处理函数中包含类似下面的代码:

NMHDR *lpnmhdr;

[...]

case WM_NOTIFY:

{

lpnmhdr = (LPNMHDR) lParam;

if(lpnmhdr-hwndFrom == hwndScintilla)

{

switch (lpnmhdr-code)

{

case SCN_CHARADDED:

{

/* Hey, Scintilla just told me that a new */

/* character was added to the Edit Control.*/

/* Now i do something cool with that char. */

}break;

}

}

}break;

Page contributed by Holger Schmidt.. libbyliugang translate it to chinese.:)

如何阅读scintilla源码

一个文本编辑器的几个重要因素:存储、显示、界面操作

存储:如何储存输入的字符,同时如何增删改

显示:如何根据字符在窗体界面上显示所有字符,按照一定的规则。

操作:有操作时如何根据位置获取设计到字符关系,比如鼠标点击,需要根据点击的位置判断出是否有字符,光标应该怎么显示,点击处的字符是什么,插入还是删除

Scite源码解读过程:我看的是Windows版本,入口函数WinMain(),通过搜索查找到WinMain()函数,从该函数中,文本框注册,创建,消息响应等等。

Notepad++是由谁或那个公司开发的?

是侯今吾开发的。

Notepad++是自由软件的纯文本编辑器,由侯今吾基于同是开放源代码的Scintilla文本编辑组件并独力研发,整个项目起初托管于SourceForge.net之上。

截止到2011年,已被下载超过2700万次,并两度获得SourceForge社群选择奖——最佳开发工具。2010年6月托管于TuxFamily,现由GitHub托管。

Notepad++是一套自由软件的纯文字编辑器,最早由侯今吾独力研发,目前已有六名程式设计师共同开发。该软件以GPL发布,有完整的中文化接口及支援多国语言撰写的功能(采用万国码UTF8技术)。

它的功能比Windows中的Notepad(记事簿)强大,除了可以用来制作一般的纯文字说明文件,也十分适合当作撰写电脑程式的编辑器。

扩展资料

Notepad++软件以GPL发布,有完整的中文化接口及支持多国语言撰写的功能(采用UTF-8编码)。它的功能比Windows中的记事本(Notepad)强大,除了可以用来制作一般的纯文字的帮助文档,也十分适合用作撰写计算机程序的编辑器。

由6.2.3版本起,Notepad++的文件默认文字格式由ANSI改为除去BOM的UTF8(UTF8 without BOM)。Notepad++不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩展基本功能的插件。

Notepad++是一套自由软件的纯文字编辑器,它支持多国语言,并且在处理文本方面具有先天性优势,完全可以取代Windows操作系统自带的记事本(Notepad),对于代码编辑方面Notepad支持语法高亮、代码折叠以及支持大量的扩展程序等。

参考资料来源:百度百科-侯今吾

scintilla源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于scintilla中文文档、scintilla源代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/30118.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载