域名连接到网站北京网站优化策略
Scintilla介绍
挺好的代码编辑开发组件,与其他代码编辑软件一样有关键字高亮,函数注释,行号,调试标记,自动缩进,代码折叠,等功能.它的词法分析支持很多语言,比如:Phthon,C++,HTML,XML,PERL,SQL,VB,makefile,VHDL,等等多大几十种.对于小语种特别好,因为它可以让你定义关键字,也就是说你自己发明的语言,它也可以很好的支持.
你需要要有一定的MFC的基础,才能理解后面的内容.
如何控制Scintilla编辑控件
您可以通过向编辑控件发送命令来控制 Scintilla。 有两种方法可以做到这一点。一种简单快捷的方法。
控制Scintilla的简单方法
简单的方法就像任何其他窗口控件一样。您可以将消息发送到 Scintilla编辑控件并从控件接收通知。(请注意,通知 被发送到 Scintilla 编辑控件的父窗口。
Scintilla 编辑控件知道每个命令的特殊消息。 要将命令发送到 Scintilla 编辑控件,您可以使用 SendMessage 函数。
SendMessage(hwndScintilla,sci_command,wparam,lparam);
某些命令将返回一个值,未使用的参数应设置为 NULL。
控制Scintilla的快速方法
控制 Scintilla 编辑控件的快速方法是自行调用消息处理函数。 您可以检索指向 Scintilla 编辑控件的消息处理函数的指针,并且 直接调用它以执行命令。这种方式比 SendMessage() 方式快得多。
首先,您必须使用 SCI_GETDIRECTFUNCTION 和 SCI_GETDIRECTPOINTER 命令 检索指向函数的指针和一个指针,该指针在调用检索到时必须是第一个参数 函数指针。 您必须使用发送消息方式执行此操作:)
整个事情必须看起来像这样:
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 命令及其两个(可选)参数。
我将如何收到通知?
每当发生 Scintilla 想要通知您某事的事件时,Scintilla 编辑控件 将通知发送到父窗口。这是通过WM_NOTITY消息完成的。 收到该消息时,您必须在 xxx 结构中查找实际消息。
因此,在 Scintillas 父窗口消息处理函数中,您必须包含如下代码:
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;
如何连接MFC
需要哪些文件
Scintilla.h,SciLexer.h,SciLexer.dll三个文件.
加载动态库
#include "SciLexer.h"
#include