LineNumberEdit.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:3k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. #if !defined(AFX_LINENUMBEREDIT_H__CAB7A465_709C_42B8_80D0_2B0AF6D25AD4__INCLUDED_)
  2. #define AFX_LINENUMBEREDIT_H__CAB7A465_709C_42B8_80D0_2B0AF6D25AD4__INCLUDED_
  3. /////////////////////////////////////////////////////////////////////////////
  4. // CLineNumberStatic window
  5. class CLineNumberStatic : public CStatic
  6. {
  7. // Construction/destruction
  8. public:
  9. CLineNumberStatic();
  10. virtual ~CLineNumberStatic();
  11. // Operations
  12. public:
  13. void SetFgColor( COLORREF col, BOOL redraw );
  14. void SetBgColor( COLORREF col, BOOL redraw );
  15. void SetTopAndBottom( int topline, int bottomline );
  16. void SetTopMargin( int topmargin );
  17. void SetLineNumberFormat( CString format );
  18. protected:
  19. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  20. afx_msg void OnPaint();
  21. afx_msg void OnLButtonDown( UINT nFlags, CPoint point );
  22. DECLARE_MESSAGE_MAP()
  23. private:
  24. // Attributes
  25. COLORREF m_fgcol;
  26. COLORREF m_bgcol;
  27. CString m_format;
  28. int m_topmargin; // Current top margin
  29. int m_topline; // Current top line number
  30. int m_bottomline; // Current bottom line number
  31. };
  32. /////////////////////////////////////////////////////////////////////////////
  33. // CLineNumberEdit window
  34. class CLineNumberEdit : public CEdit
  35. {
  36. // Construction/destruction
  37. public:
  38. CLineNumberEdit();
  39. virtual ~CLineNumberEdit();
  40. // Operations
  41. public:
  42. void SetMarginForegroundColor( COLORREF col, BOOL redraw = TRUE, BOOL bEnabled = TRUE );
  43. void SetMarginBackgroundColor( COLORREF col, BOOL redraw = TRUE, BOOL bEnabled = TRUE );
  44. void SetLineNumberFormat( CString format );
  45.     void SetLineNumberRange( UINT nMin, UINT nMax = 0 );
  46.     void UseSystemColours( BOOL bUseEnabled = TRUE, BOOL bUseDisabled = TRUE );
  47. int GetLineHeight() {return m_zero.cy;}
  48. protected:
  49. virtual void PreSubclassWindow();
  50. virtual afx_msg void OnEnable( BOOL bEnable );
  51. virtual afx_msg void OnSysColorChange();
  52. virtual afx_msg void OnChange();
  53. virtual afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
  54. virtual afx_msg void OnVscroll();
  55. virtual afx_msg void OnSize(UINT nType, int cx, int cy);
  56. virtual afx_msg LRESULT OnSetFont(WPARAM wParam, LPARAM lParam); // Maps to WM_SETFONT
  57. virtual afx_msg LRESULT OnSetText(WPARAM wParam, LPARAM lParam); // Maps to WM_SETTEXT
  58. virtual afx_msg LRESULT OnLineScroll(WPARAM wParam, LPARAM lParam); // Maps to EM_LINESCROLL
  59. virtual afx_msg LRESULT OnSelectLine(WPARAM wParam, LPARAM lParam);
  60. DECLARE_MESSAGE_MAP()
  61. private:
  62. void Prepare();
  63. int CalcLineNumberWidth();
  64. void UpdateTopAndBottom();
  65.     // Method to set window colour only
  66. void SetWindowColour( BOOL bEnable = TRUE );
  67. // Attributes
  68. BOOL m_bUseEnabledSystemColours;
  69. COLORREF m_EnabledFgCol;
  70. COLORREF m_EnabledBgCol;
  71. BOOL m_bUseDisabledSystemColours;
  72. COLORREF m_DisabledFgCol;
  73. COLORREF m_DisabledBgCol;
  74. CLineNumberStatic m_line;
  75. CSize m_zero;
  76. int m_maxval;
  77. CString m_format;
  78.     int                 m_LineDelta; // Introduced to provide an offset to the first line number
  79. };
  80. #endif // !defined(AFX_LINENUMBEREDIT_H__CAB7A465_709C_42B8_80D0_2B0AF6D25AD4__INCLUDED_)