⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ccrystaleditview.h

📁 一个类似VB代码编辑器.通过一个多文档模板导出
💻 H
字号:
 // CrystalEditView.h : interface of the CCrystalEditView class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_CRYSTALEDITVIEW_H__1C6DEAC4_B88C_4BCE_9556_1FE59ED4BF1E__INCLUDED_)
#define AFX_CRYSTALEDITVIEW_H__1C6DEAC4_B88C_4BCE_9556_1FE59ED4BF1E__INCLUDED_
#define TAB_CHARACTER				_T('\xBB')
#define SPACE_CHARACTER				_T('\x95')
#define DEFAULT_PRINT_MARGIN		1000				//	10 millimeters

#define SMOOTH_SCROLL_FACTOR		6
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "AFXRICH.H"
#include "DLLDocument.h"
#include "CCrystalTextBuffer.h"
#include <list>
#include <algorithm>
using namespace std;
typedef list<int> IntList;
class CCrystalEditCntrItem;

class CCrystalEditView : public CRichEditView
{
protected: // create from serialization only
	CCrystalEditView();
	DECLARE_DYNCREATE(CCrystalEditView)

// Attributes
public:
//	CCrystalEditDoc* GetDocument();

	BOOL	m_bOvrMode;
	CPoint m_ptCursorPos;
	CPoint m_ptSelStart, m_ptSelEnd;
	CPoint m_ptAnchor;
	int m_nScreenLines, m_nScreenChars;

	int m_nMaxLineLength;
	int m_nIdealCharPos;

	BOOL m_bFocused;
	//-----------------
	HACCEL m_hAccel;
	BOOL m_bVertScrollBarLocked, m_bHorzScrollBarLocked;
	CPoint m_ptDraggedTextBegin, m_ptDraggedTextEnd;

	//	Printing
	int m_nPrintPages;
	int *m_pnPages;
	CFont *m_pPrintFont;
	int m_nPrintLineHeight;
	BOOL m_bPrintHeader, m_bPrintFooter;
	CRect m_ptPageArea, m_rcPrintArea;

	int m_nTopLine, m_nOffsetChar;
	BOOL m_bSmoothScroll;

		BOOL m_bLastSearch;
	DWORD m_dwLastSearchFlags;
	LPTSTR m_pszLastFindWhat;
	BOOL m_bMultipleSearch;         // More search  
	
	BOOL m_bCursorHidden;

	//	Painting caching bitmap
	CBitmap *m_pCacheBitmap;

	//	Line/character dimensions
	int m_nLineHeight, m_nCharWidth;
	void CalcLineCharDim();

	//	Text attributes
	int m_nTabSize;
	BOOL m_bViewTabs;
	BOOL m_bSelMargin;


	LOGFONT m_lfBaseFont;
	CFont *m_apFonts[4];

	//	Parsing stuff
	DWORD *m_pdwParseCookies;
	int m_nParseArraySize;
	DWORD GetParseCookie(int nLineIndex);

	//	Pre-calculated line lengths (in characters)
	int m_nActualLengthArraySize;
	int *m_pnActualLineLength;

	BOOL m_bPreparingToDrag;
	BOOL m_bDraggingText;
	BOOL m_bDragSelection, m_bWordSelection, m_bLineSelection;
	UINT m_nDragSelTimer;

	BOOL m_bBookmarkExist;     // More bookmarks
	BOOL m_bShowInactiveSelection;

	CPoint m_ptDrawSelStart, m_ptDrawSelEnd;
// Operations
public:
    CCrystalTextBuffer *m_pTextBuffer;
	CPoint GetCursorPos();
	int GetLineCount();
	void SetSelection(const CPoint &ptStart, const CPoint &ptEnd);
	void SetAnchor(const CPoint &ptNewAnchor);
	void SetCursorPos(const CPoint &ptCursorPos);
	void EnsureVisible(CPoint pt);
	BOOL QueryEditable();
	BOOL DeleteCurrentSelection();
	void UpdateCaret();
	BOOL IsSelection();
	BOOL IsInsideSelection(const CPoint &ptTextPos);
	void GetSelection(CPoint &ptStart, CPoint &ptEnd);
    void PrepareSelBounds();
    int GetScreenLines();
    void ScrollToLine(int nNewTopLine, BOOL bNoSmoothScroll = FALSE, BOOL bTrackScrollBar = TRUE);
    virtual void UpdateSiblingScrollPos(BOOL bHorz);
	int CalculateActualOffset(int nLineIndex, int nCharIndex);
	int GetScreenChars();
	int GetMaxLineLength();
	void ScrollToChar(int nNewOffsetChar, BOOL bNoSmoothScroll = FALSE, BOOL bTrackScrollBar = TRUE);
    int GetLineHeight();
	void RecalcVertScrollBar(BOOL bPositionOnly = FALSE);
	void RecalcHorzScrollBar(BOOL bPositionOnly = FALSE);
	CCrystalEditView *GetSiblingView(int nRow, int nCol);
	virtual void OnUpdateSibling(CCrystalEditView *pUpdateSource, BOOL bHorz);
	int GetLineLength(int nLineIndex);
	LPCTSTR GetLineChars(int nLineIndex);
	int GetTabSize();
	int GetMarginWidth();
	int GetCharWidth();
	int GetLineActualLength(int nLineIndex);
	void InvalidateLines(int nLine1, int nLine2, BOOL bInvalidateMargin = FALSE);
	void AttachToBuffer(CCrystalTextBuffer *pBuf = NULL);
	virtual CCrystalTextBuffer *LocateTextBuffer();
	void ResetView();
	void PaintLeft();			//画左边显示条
	void AddRemoveBP(int point);//设置或删除断点
	int m_LineHeight;			//行高
	IntList lBreakPoint;		//断点行号
	// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CCrystalEditView)
	public:
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
	protected:
	virtual void OnInitialUpdate(); // called first time after construct
	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CCrystalEditView();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
	//{{AFX_MSG(CCrystalEditView)
	afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
	afx_msg void OnPaint();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};


/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CRYSTALEDITVIEW_H__1C6DEAC4_B88C_4BCE_9556_1FE59ED4BF1E__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -