利用scintilla实现高级编辑器

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 cs
	cs.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 here
	SendMessage(SCI_APPENDTEXT,7,(LPARAM)"Hellow!");
	return 0;
}


最后运行,看看效果:

成功了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值