利用scintilla实现高级编辑器

来源:互联网 发布:ps软件错误16 编辑:程序博客网 时间:2024/06/04 18:14

scintilla是一款开源的编辑器组件,在windows上以动态库存在,目前在notepad++,codeblock都是用该组件完成大部分编辑功能。网上绝大部分是用c++builder来调用scintilla来实现高级编辑功能,这里我以vc6来实现。

用vc6新建一个单文档工程。我们改写View 类,使view成为scintilla class的一个实例,

首先,不要忘了在app的InitInstance函数中添加如下代码:

LoadLibrary("SciLexer.dll");


然后在view类中的PreCreateWindow把class名称改为scintilla,代码如下:

BOOL CSciEditView::PreCreateWindow(CREATESTRUCT& cs){// TODO: Modify the Window class or styles here by modifying//  the CREATESTRUCT cscs.lpszClass = "scintilla";return CView::PreCreateWindow(cs);}

最后重要的一步是必须处理view的WM_PAINT消息,让其执行默认动作,在classwizard中为CSciEditView添加WM_PAINT消息处理:


 

在void CSciEditView::OnPaint()添加如下代码:

void CSciEditView::OnPaint() {Default();}


为了看看效果我们在OnCreate函数给scintilla添加一些文字:

int CSciEditView::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CView::OnCreate(lpCreateStruct) == -1)return -1;// TODO: Add your specialized creation code hereSendMessage(SCI_APPENDTEXT,7,(LPARAM)"Hellow!");return 0;}


最后运行,看看效果:

成功了!

原创粉丝点击