MyEditerView.h
上传用户:icamtech05
上传日期:2020-11-24
资源大小:10883k
文件大小:3k
源码类别:

编辑框

开发平台:

Visual C++

  1. // MyEditerView.h : CMyEditerView 类的接口
  2. //
  3. #pragma once
  4. #include <map>
  5. class CMyEditerCntrItem;
  6. class CMyEditerDoc;
  7. class CMyEditerView : public CRichEditView
  8. {
  9. enum ChangeType { ctUndo, ctUnknown, ctReplSel, 
  10. ctDelete, ctBack, ctCut, ctPaste, ctMove };
  11. struct Color
  12. {
  13. COLORREF crClr;
  14. bool bBold;
  15. };
  16. CMap<CString, LPCTSTR, int, int> m_mpKeyword; // 关键字映射
  17. // 变量名-〉变量类型
  18. CMap<CString, LPCTSTR, int, int &> m_mpVariable; // 变量定义映射
  19. // 函数名 + 变量类型累积-〉区分
  20. CMap<CString, LPCTSTR, int, int &> m_mpFunction; // 函数定义映射
  21. int m_nLineCount; //正在编辑的文本总行数
  22. int m_nCharTabWidth; //Tab宽度,以Point表示
  23. int m_nCharSpaceWidth; //空格宽度,以Point表示
  24. BOOL m_bRealReturn; //指示一行是否为硬回车
  25. int m_nCurrentLine; //取当前光标所在行
  26. ChangeType m_changeType; // 文本改变的类型
  27. CHARRANGE m_crOldSel; // 原来选中范围
  28. CFont m_font; //RichEditCtrl字体
  29. LOGFONT m_lf; //语法编辑视字体
  30. int m_nCharNumberWidth; // 数字宽度
  31. int m_nLineHeight; // 行高
  32. int m_nTabSize; // Tab宽度,以空格数表示
  33. bool m_bInForceChange; // 正在强制转换
  34. //颜色值
  35. Color m_clrCommentColor; //注释色
  36. Color m_clrKeywordColor; //语法色
  37. Color m_clrNormalColor; //正常色
  38. Color m_clrStringColor; //字符串色
  39. Color m_clrCharColor; //字符常量色
  40. Color m_clrNumberColor; //数字色
  41. Color m_clrConstantColor; // 常量色
  42. protected: // 仅从序列化创建
  43. CMyEditerView();
  44. DECLARE_DYNCREATE(CMyEditerView)
  45. // 属性
  46. public:
  47. CMyEditerDoc* GetDocument() const;
  48. CRichEditCtrl * ctrlEdit;
  49. // 操作
  50. public:
  51. // 重写
  52. public:
  53. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  54. protected:
  55. virtual void OnInitialUpdate(); // 构造后第一次调用
  56. virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
  57. // 实现
  58. public:
  59. virtual ~CMyEditerView();
  60. #ifdef _DEBUG
  61. virtual void AssertValid() const;
  62. virtual void Dump(CDumpContext& dc) const;
  63. #endif
  64. protected:
  65. // 控制从 iStart 到 iEnd 的格式
  66. void FormatText(int iStart, int iEnd); 
  67. // 生成的消息映射函数
  68. protected:
  69. afx_msg void OnDestroy();
  70. afx_msg void OnEnProtected(NMHDR *pNMHDR, LRESULT *pResult);
  71. DECLARE_MESSAGE_MAP()
  72. public:
  73. // afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  74. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  75. afx_msg void OnEnChange();
  76. protected:
  77. // 初始化每一种颜色值
  78. void SetColor(COLORREF clr, bool bBold, Color & sc);
  79. // // 初始化颜色值
  80. void AddColors(void);
  81. private:
  82. // 添加关键字
  83. void AddKeyWords(void);
  84. public:
  85. // 为当前行设置格式
  86. void FormatLine(int iStart, int iEnd);
  87. protected:
  88. // 设置从 iStart 开始到 iEnd 结束的字符格式
  89. void SetFormat(int iStart, int iEnd, Color clr);
  90. // 初始化程序,将文件设为保护模式
  91. void Initialize(void);
  92. public:
  93. // 向后移动指针
  94. bool AddIndex(CString & strBuffer, int & Index);
  95. };
  96. #ifndef _DEBUG  // MyEditerView.cpp 中的调试版本
  97. inline CMyEditerDoc* CMyEditerView::GetDocument() const
  98.    { return reinterpret_cast<CMyEditerDoc*>(m_pDocument); }
  99. #endif