SynEditView.h
上传用户:hgtech
上传日期:2022-06-07
资源大小:4455k
文件大小:4k
源码类别:

词法分析

开发平台:

Visual C++

  1. #if !defined(AFX_SYNEDITVIEW_H__A9D39C50_1DC1_40DB_80F7_ACCD8988A157__INCLUDED_)
  2. #define AFX_SYNEDITVIEW_H__A9D39C50_1DC1_40DB_80F7_ACCD8988A157__INCLUDED_
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. //颜色索引
  7. enum {
  8. COLORINDEX_COMMENT,
  9. COLORINDEX_SYNTAX,
  10. COLORINDEX_NORMAL,
  11. COLORINDEX_NUMBER,
  12. COLORINDEX_STRING,
  13. COLORINDEX_CHAR,
  14. COLORINDEX_BK,
  15. };
  16. class CSynEditView : public CRichEditView
  17. {
  18. struct COLORINFO {
  19. int Pos;
  20. int Color;
  21. };
  22. protected: // create from serialization only
  23. CSynEditView();
  24. DECLARE_DYNCREATE(CSynEditView)
  25. // Attributes
  26. public:
  27. // Operations
  28. public:
  29. // Overrides
  30. // ClassWizard generated virtual function overrides
  31. //{{AFX_VIRTUAL(CSynEditView)
  32. public:
  33. virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
  34. protected:
  35. virtual void OnInitialUpdate(); // called first time after construct
  36. virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
  37. virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
  38. //}}AFX_VIRTUAL
  39. // Implementation
  40. public:
  41. void LoadFile(CString strFile);
  42. void SetWrapMode(int nWrapMode);
  43. virtual ~CSynEditView();
  44. #ifdef _DEBUG
  45. virtual void AssertValid() const;
  46. virtual void Dump(CDumpContext& dc) const;
  47. #endif
  48. protected:
  49. // Generated message map functions
  50. protected:
  51. //{{AFX_MSG(CSynEditView)
  52. afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );
  53. afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  54. afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  55. //}}AFX_MSG
  56. DECLARE_MESSAGE_MAP()
  57. private:
  58. static DWORD CALLBACK EditStreamCallbackReadFromFile(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb);
  59. void SetSynEditViewMargin(int nLeftMargin, int nTopMargin);
  60. BOOL IsNumber(CString &strReadyToTest);
  61. BOOL IsSynWord(CString &strReadyToTest);
  62. void LoadSynWord();
  63. DWORD ParseLine(DWORD dwCookie, CString &strLine, COLORINFO *ColorInfo, int &nActualItems);
  64. void SetParseCookieZeroFromGivenLine(int nParseArraySize);
  65. void SetSynEditViewTabSize(int nSize);
  66. void SetSynEditViewFont(LOGFONT lf);
  67. BOOL GetLineString(int nLine, CString &strLine);
  68. COLORREF GetColor(int nColorIndex);
  69. BOOL IsSelectionInStr(int nFromHere, int nStrWidth, int nTop);
  70. void DrawSynEditView();
  71. void CalcHorzScrollPos();
  72. void JudgeInSeletioAndDrawText(CDC *cacheDC, CRect &rcLine, CString &str, COLORREF clrBkColor, COLORREF clrText);
  73. BOOL IsStrInSelection(int ptLeft, int ptTop);
  74. void CalcSelection();
  75. void ResetParseCookie();
  76. DWORD GetParseCookie(int nLineIndex);
  77. int GetCurrentLine();
  78. void DrawSingleLineColorText(CDC *cacheDC, int nLine, CRect rcLine);
  79. void SetSynCtrlTabSize(int nSize);
  80. void SetSynCtrlFont();
  81. void CalcEditorInfo();
  82. int GetLinesTop(int nline);
  83. CStringArray m_strArrayKeyWords; //关键字数组
  84. int m_nLineCount; //正在编辑的文本总行数
  85. BOOL m_bTracking; //水平滚动是否正在被拖动
  86. CPoint m_ptSelEnd; //选择区域尾位置
  87. CPoint m_ptSelStart; //选择区域首位置
  88. int m_nCharTabWidth; //Tab宽度,以Point表示
  89. int m_nCharSpaceWidth; //空格宽度,以Point表示
  90. BOOL m_bRealReturn; //指示一行是否为硬回车
  91. BOOL m_bAllowDraw; //指示是否允许重画视,为加快拖动速度而设的参数
  92. int m_nCurrentLine; //取当前光标所在行
  93. int m_nParseArraySize; //已解析的行数
  94. int m_nHorzPos; //水平滚动条位置
  95. DWORD *m_pdwParseCookies; //装入每行的解析结果
  96. CBitmap *m_pCacheBitmap; //内存缓冲画布
  97. CFont m_font; //RichEditCtrl字体
  98. LOGFONT m_lf; //语法编辑视字体
  99. int m_nCharNumberWidth; //数字宽度
  100. int m_nLineHeight; //行高
  101. int m_nTabSize; //Tab宽度,以空格数表示
  102. int m_nLeftMargin; //客户区左边距
  103. int m_nTopMargin; //客户区顶边距
  104. CRect m_rcClient; //SynEditView的客户区
  105. //颜色值
  106. COLORREF m_clrBkColor; //背景色
  107. COLORREF m_clrCommentColor; //注释色
  108. COLORREF m_clrSyntaxColor; //语法色
  109. COLORREF m_clrNormalColor; //正常色
  110. COLORREF m_clrStringColor; //字符串色
  111. COLORREF m_clrCharColor; //字符常量色
  112. COLORREF m_clrNumberColor; //数字色
  113. COLORREF m_clrBKSelText; //选择区域背景色
  114. };
  115. /////////////////////////////////////////////////////////////////////////////
  116. //{{AFX_INSERT_LOCATION}}
  117. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  118. #endif // !defined(AFX_SYNEDITVIEW_H__A9D39C50_1DC1_40DB_80F7_ACCD8988A157__INCLUDED_)