Scintilla笔记(1)
Scintilla嵌入MFC
Scintilla作为一款优秀的源码编辑器,提供了非常强大的功能,如:
源码编辑、语法高亮、错误提示、代码助手、调用提示、添加标记、设置页边、折叠代码、高亮当前行、设置Tab等等。
Scintilla在网上能找到的资料都比较少,要想最大化的使用Scintilla控件,就必须结合官网和其他开源软件来了解Scintilla,Scintilla官网:
http://www.scintilla.org/。
目前有非常多的开源软件都是使用Scintilla控件,例如NotePad++、CodeBlocks等等(
http://www.scintilla.org/ScintillaRelated.html列举了使用Scintilla的软件)。
因为本人一直使用MFC作为开发工具,则使用了CScintillaCtrl作为Scintilla的上层封装,CScintillaCtrl对Scintilla控件进行了MFC的封装,使编码人员能够非常高效和清楚的使用Scintilla控件,下载:
http://www.naughter.com/scintilla.html。
下面讲一下将Scintilla嵌入MFC程序中:
1.在MFC程序的View中声明一个CScintillaCtrl的成员变量:
|
class XXXView : public CView
{
private:
CScintillaCtrl m_ScintillaEdit;
}
|
2.在View中OnCreate中创建Scintilla控件:
|
int CViewST::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
CRect r(0,0,10,10);
if (!m_ScintillaEdit.Create(WS_CHILD|WS_VISIBLE|WS_TABSTOP, r, this, 0))
return -1;
return 0;
}
|
3.在OnSize中设置Scintilla控件大小:
|
void CViewST::OnSize(UINT nType, int cx, int cy)
{
CView::OnSize(nType, cx, cy);
if (!m_ScintillaEdit.GetSafeHwnd())
{
// 如果控件未创建则直接返回
return;
}
CRect r;
GetClientRect(&r);
m_ScintillaEdit.MoveWindow(&r);
}
|
4.重写OnPaint()虚函数:
| virtual void OnPaint() { Default(); } |
这样就完成了将Scintilla嵌入到MFC中。
本文介绍如何将Scintilla编辑器嵌入到MFC应用程序中,包括声明成员变量、创建Scintilla控件、调整其大小及重写绘图函数。
7037





