分享
 
 
 

语法高亮控件 PfxEditCtrl

王朝vc·作者佚名  2006-01-17
窄屏简体版  字體: |||超大  

语法高亮控件 PfxEditCtrl

作者:陈建初

下载源代码

两年多以前本人发布了一款语法编辑软件LiteEdit,得到了很多朋友的支持,很多人要求我公布源代码,经过我考虑再三决定公布其中的编辑控件PfxEditCtrl。这是一款全面支持中文的编辑控件,使用标准的MFC

DOC/VIEW机制,使用比较简单,但功能却很强大。PfxEditCtrl由两个主要的类组成,包括CPfxEditView和

CPfxEditDoc,这个控件主要支持如下功能:

文本编辑;

打印;

可通过语法配置文件定制的语法高亮显示;

自动换行;

支持非等宽字体;

列块选择/复制/删除/粘贴等列块方式编辑操作;

支持UNICODE/UTF8/UNICODE BIG ENDIUM/ANSI文件的打开,编辑,转换;

支持拆份成双窗口并列编辑;

为了方便大家能快速上手,本人编写了一示范程序。建立CPfxEditView的派生类:

class CMyEditView : public CPfxEditView

{

DECLARE_DYNCREATE(CMyEditView)

protected:

CMyEditView(); // 动态创建所使用的受保护的构造函数

virtual ~CMyEditView();

public:

CMyEditDoc* GetDocument() const;

protected:

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

virtual BOOL OnSetupPrintInfo(CPfxEditPrintInfo* pPrintInfo);

protected:

DECLARE_MESSAGE_MAP()

};

建立CPfxEditDoc的排生类:

class CMyEditDoc : public CPfxEditDoc

{

DECLARE_DYNCREATE(CMyEditDoc)

protected:

CMyEditDoc();

virtual ~CMyEditDoc();

public:

// 当前使用的语法配置信息是否与给定的相同。

BOOL IsCurFileTypeInfo(const CMyEditTypeInfo* pTypeInfo) const;

// 获取当前使用的语法配置信息。

const CMyEditTypeInfo* GetFileTypeInfo() const;

// 指定本文档使用哪种语法配置信息。

void SetFileTypeInfo(CMyEditTypeInfo* pTypeInfo);

protected:

virtual void SetModifiedFlag(BOOL bModified);

virtual LONG OnEvent(UINT nCode, LPARAM lParam);

virtual BOOL OnInitDocument(LPCTSTR pszPathName);

protected:

DECLARE_MESSAGE_MAP()

};

注册文档模板:

BOOL CApp::InitInstance()

{

// 注册应用程序的文档模板。文档模板

// 将用作文档、框架窗口和视图之间的连接

CMultiDocTemplate* pTemplate = new CMultiDocTemplate(IDR_MYEDIT,

RUNTIME_CLASS(CMyEditDoc),

RUNTIME_CLASS(CMyEditFrame), // 自定义 MDI 子框架

RUNTIME_CLASS(CMyEditView));

if (pTemplate == NULL)

{

return false;

}

AddDocTemplate(pTemplate);

......

}

现在就可以使用CPfxEditCtrl的功能了......就这么简单,更使用平常的MFC DOC/VIEW没有什么两样,如图所示:

结束语

很早以前当我想写一个编辑控件的时候曾经参考过很多网上公布的语法编辑控件,我发觉这些控件编写的质量不是那么令人满意,或者是不支持MBCS字符,或者是内存管理一团糟,又或者是架构不够好和代码写得不怎么样,最后我决定自己动手写一个,于是用了大约一年的时间来编写了这个控件。现在我自己编写的

LiteEdit 在功能上和性能上都可以和 EditPlus/UltraEdit 等有得拼。所以,我已经有两三年没有用 UltraEdit 和

EditPlus 了。随着时间的推移,现在NT内核的系统已经占主流,而我由于工作等原因也没有对 LiteEdit(PfxEditCtrl)进行更新,我计划在有时间的时候编写一个全新的

PfxEditCtrl2.0 版,基于 UNICODE 模式,有非常好的虚存管理功能,像 UltraEdit/emEditor

那样只需要很少的内存便可以编辑超大文件。当然了今天的我和几年前写 PfxEditCtrl 的时候的水平肯定有很大不同了,使 LiteEdit

能够打败 UltraEdit 等著名的编辑软件是我对这个小软件一点期望,期待 LiteEdit2.0 版......

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有