2008年(909)
分类:
2008-05-06 22:33:48
下载源代码
两年多以前本人发布了一款语法编辑软件LiteEdit,得到了很多朋友的支持,很多人要求我公布源代码,经过我考虑再三决定公布其中的编辑控件PfxEditCtrl。这是一款全面支持中文的编辑控件,使用标准的MFC
DOC/VIEW机制,使用比较简单,但功能却很强大。PfxEditCtrl由两个主要的类组成,包括CPfxEditView和
CPfxEditDoc,这个控件主要支持如下功能:
为了方便大家能快速上手,本人编写了一示范程序。建立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没有什么两样,如图所示: