📄 cedtview.h
字号:
// cedtView.h : interface of the CCedtView class
//
/////////////////////////////////////////////////////////////////////////////
#if !defined(AFX_CEDTVIEW_H__FFCA2B8E_F9C5_11D4_A6F1_0050CE184C9B__INCLUDED_)
#define AFX_CEDTVIEW_H__FFCA2B8E_F9C5_11D4_A6F1_0050CE184C9B__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CCedtView : public CView
{
protected: // create from serialization only
CCedtView();
DECLARE_DYNCREATE(CCedtView)
public: // general preferences
static COLORREF m_crBkgrColor[10], m_crTextColor[40];
static LOGFONT m_lfScreen[10], m_lfPrinter[10];
static LOGFONT m_lfMiscel[10]; // 0x00: Column Mode, 0x01: Output Window
static INT m_nCurrentScreenFont, m_nCurrentPrinterFont;
static BOOL m_bUsingColumnModeFont;
static BOOL m_bShowLineNumbers, m_bSyntaxHighlight;
static BOOL m_bEmboldenKeywords, m_bItalicizeComment;
static BOOL m_bHighlightActiveLine, m_bUseSpacesInPlaceOfTab;
static BOOL m_bEnablePairsMatching, m_bEnableAutoIndent;
static BOOL m_bShowSelectionMargin;
static BOOL m_bHomeKeyGoesToFirstPosition, m_bSearchWrapAtEndOfFile;
static BOOL m_bEnableDragAndDropEditing, m_bOpenDocumentWordWrapped;
static BOOL m_bShowSpaces, m_bShowTabChars, m_bShowLineBreak;
static INT m_nTabSize, m_nLineSpacing, m_nLineNumberDigits;
static INT m_nCaretWidthRatio, m_nFileTabLength;
static INT m_nFixedWrapWidth, m_nWrapIndentation;
static BOOL m_bShowColumnMarker1, m_bShowColumnMarker2;
static INT m_nColumnMarker1Pos, m_nColumnMarker2Pos;
public: // printing preferences
static RECT m_rectPageMargin; // in LOMETRIC
static BOOL m_bPrintLineNumbers, m_bPrintSyntaxHighlight;
static BOOL m_bPrintHeader, m_bPrintFooter;
static CString m_szHeaderFormat[3], m_szFooterFormat[3];
static CString m_szHeaderString[3], m_szFooterString[3];
public: // global view mode
static BOOL m_bOverwriteMode;
static BOOL m_bColumnMode;
protected: // search related variables
static BOOL m_bReplaceSearch;
static CString m_szFindString, m_szReplaceString;
static UINT m_nSearchOptions; // WholeWord, MatchCase, RegExp
static CRegExp m_clsRegExp;
public: // user commands
static CUserCommand m_clsUserCommand[11];
static CString m_szUserCommandFilePath[8];
protected: // user command input & output
static BOOL m_bChildOutputLineContinue;
static CStringArray m_arrChildInputString;
protected: // redirect handles
static HANDLE m_hChildStdinWrDup, m_hChildStdoutRdDup;
static HANDLE m_hChildProcess, m_hChildThread;
public: // user macros buffers
static CMacroBuffer m_clsMacroBuffer[11];
static CString m_szMacroBufferFilePath[8];
protected: // macro recording variables
static BOOL m_bMacroRecording;
static INT m_nMacroRecordingNumber;
static CString m_szMacroName;
protected: // global screen resources
static CDC m_dcScreen;
static CBitmap m_bmScreen;
static CFont m_fontScreen, m_fontScreenIt;
static CFont m_fontPrinter, m_fontPrinterIt;
static INT m_nScreenFontChangeSequence;
public:
static WINDOWPLACEMENT * m_lpWindowPlacement;
protected: // formated file contents
CFormatedText m_clsFormatedScreenText;
CFormatedText m_clsFormatedPrintText;
INT m_nFormatedPrintTextStartIdxY; // starting index of formated print text
protected: // view status
BOOL m_bHaveFocus, m_bAutoScroll, m_bLineSelect;
CRect m_rectNonScroll; // non scroll boundary of view
CSize m_szPrevClientSize; // to check text formatting is necessary
CPoint m_ptRButtonUpPoint; // to check if context menu is called from mouse
protected: // local display options
BOOL m_bLocalWordWrap;
BOOL m_bLocalSpellCheck;
protected: // scroll position & caret position
INT m_nScrollPosX, m_nScrollPosY;
INT m_nAnchorPosX, m_nAnchorPosY;
INT m_nCaretPosX, m_nCaretPosY;
INT m_nCaretPosXFixed; // used to move up & down
protected: // block selection (copy & paste)
BOOL m_bSaveSelected, m_bSelected;
INT m_nSaveSelBegX, m_nSaveSelBegY;
INT m_nSaveSelEndX, m_nSaveSelEndY;
protected: // saved index (save & restore caret and anchor pos)
INT m_nScrollIdxX, m_nScrollIdxY;
INT m_nAnchorIdxX, m_nAnchorIdxY;
INT m_nCaretIdxX, m_nCaretIdxY;
protected: // active line highlight
CDC m_dcActiveLine; CBitmap m_bmActiveLine;
BOOL m_bActiveLineHighlighted;
INT m_nActiveLineHighlightedPosY;
protected: // matching pairs highlight
BOOL m_bPairMatched, m_bBeginningPair;
INT m_nPairPosX[2], m_nPairPosY[2], m_nPairWidth;
BOOL m_bPairHighlighted[2];
protected: // IMM composition
BOOL m_bComposition;
protected: // Drag And Drop
COleDropTarget m_oleDropTarget;
BOOL m_bDragDataSource, m_bDragDropOccured;
INT m_nDragPosX, m_nDragPosY;
public: // *** CCedtView.cpp ***
static BOOL IsOverwriteMode() { return m_bOverwriteMode; }
static BOOL IsColumnMode() { return m_bColumnMode; }
static void OnSizeMainWindow(int cx, int cy);
BOOL IsWordWrapOn() { return m_bLocalWordWrap; }
BOOL IsSpellCheckOn() { return m_bLocalSpellCheck; }
// void OnInitialUpdate();
void Reinitialize();
void UpdateScrollBars();
void UpdateCaretPosition();
void UpdateDragPosition();
void UpdateFileStatusPane();
void UpdateMDIFileTabOfTheDocument();
BOOL TurnOffWordWrapMode();
protected:
void UpdateAllPanesInTheSameRow();
void UpdateAllPanesSharingScrollBar();
void UpdateAllViews();
public:
INT GetCompositionString(DWORD dwIndex, CString & szString);
INT GetCurrentLineNumber();
CString GetCurrentWord();
CString GetSelectedString();
protected:
void OnScreenFontChange();
void OnTimerAutoScroll();
public: // *** cedtViewFont.cpp ***
static BOOL IsFixedPitchScreenFont(INT nFont);
static BOOL IsUsingFixedPitchFont(CDC * pDC = NULL);
static void CreateScreenFontObject();
static void CreatePrinterFontObject(CDC * pDC);
static CFont * ApplyCurrentScreenFont();
static CFont * ApplyCurrentPrinterFont(CDC * pDC);
public: // *** cedtViewMetric.cpp ***
static INT GetLogPixelsX(CDC * pDC = NULL);
static INT GetLogPixelsY(CDC * pDC = NULL);
protected:
static INT GetCharHeight(CDC * pDC = NULL);
static INT GetSpaceWidth(CDC * pDC = NULL);
static INT GetNumberWidth(CDC * pDC = NULL);
static INT GetAveCharWidth(CDC * pDC = NULL);
static INT GetMaxCharWidth(CDC * pDC = NULL);
static INT GetLeftMargin(CDC * pDC = NULL);
static INT GetLineHeight(CDC * pDC = NULL);
INT GetCharWidth();
INT GetLinesPerPage();
public: // *** cedtViewScroll.cpp ***
void SetScrollPosY(INT nPosY);
void SetScrollPosX(INT nPosX);
protected:
void SetScrollPosSyncAllPanes(INT nPosX, INT nPosY);
void SetScrollPosToMakeCaretVisible();
void SetScrollPosToMakeAutoScroll();
void SetScrollPosToMakeDragScroll();
void SetScrollPosToMakeCaretTop();
void SetScrollPosToMakeCaretBottom();
void SetScrollPosToMakeCaretCenter();
public: // *** cedtViewCaret.cpp ***
BOOL IsSelected() { return m_bSelected; }
INT GetSelectedLineCount();
void SaveCaretAndAnchorPos();
void RestoreCaretAndAnchorPos();
void GetSelectedPosition(INT & nBegX, INT & nBegY, INT & nEndX, INT & nEndY);
void GetSelectedIndex(INT & nBegX, INT & nBegY, INT & nEndX, INT & nEndY);
protected:
void SetCaretPosY(INT nPosY);
void SetCaretPosX(INT nPosX, BOOL bFix = TRUE);
void SetCaretPosFromMouse(CPoint point);
void SetDragPosY(INT nPosY);
void SetDragPosX(INT nPosX);
void SetDragPosFromMouse(CPoint point);
BOOL IsCaretVisible();
BOOL IsPointInSelection(CPoint point);
BOOL IsPositionInSelection(INT nPosX, INT nPosY);
INT RelativePosToSavedSelection(INT nPosX, INT nPosY);
void AdjustCaretAndAnchorPosRelativeToSavedSelection();
void AdjustCaretPosAfterLineSelectMouseMove();
public: // *** cedtViewMisc.cpp ***
static void SetClipboardData(CMemText & rBlock);
static BOOL GetClipboardData(CMemText & rBlock);
static BOOL HasClipboardData();
static BOOL GetOleDataObjectData(COleDataObject * pDataObject, CMemText & rBlock);
static BOOL GetGlobalMemoryText(HGLOBAL hMemory, CMemText & rBlock);
static HGLOBAL SetGlobalMemoryText(CMemText & rBlock);
protected:
BOOL MultiLineStringConstant();
BOOL VariableHighlightInString();
BOOL HasLineCommentDelimiter();
BOOL HasBlockCommentDelimiter();
static UINT GetKeyState();
static CString GetCurrentDate();
static CString GetCurrentTime();
protected: // *** cedtViewDraw.cpp ***
void DrawScreenBackgroundAndText();
void InvertScreenSelected();
void DrawPrintPageOutline(CDC * pDC, RECT rectDraw, INT nCurPage);
void DrawPrintPageBackgroundAndText(CDC * pDC, RECT rectDraw, INT nCurPage);
void DrawActiveLineHighlight();
void DrawColumnMarkerHighlight();
void DrawScreenBookmark(INT nPosX, INT nPosY, INT nWidth, INT nHeight);
void DrawScreenUnderbar(INT nPosX, INT nPosY, INT nWidth, INT nHeight);
void DrawScreenSpace(INT nPosX, INT nPosY, INT nWidth, INT nHeight);
void DrawScreenTabChar(INT nPosX, INT nPosY, INT nWidth, INT nHeight);
void DrawScreenLineBreak(INT nPosX, INT nPosY, INT nWidth, INT nHeight);
void ParsePageHeaderAndFooter(INT nCurPage, INT nMaxPage);
void ParsePageHeaderAndFooter(CString & szArgument, LPCTSTR lpszFilePath, LPCTSTR lpszFileName,
LPCTSTR lpszPageNumber, LPCTSTR lpszTotalPage, LPCTSTR lpszCurrDate, LPCTSTR lpszCurrTime);
protected: // *** cedtViewHighlight.cpp ***
void HighlightActiveLine();
void UnhighlightActiveLine();
void HighlightColumnMarker();
void HighlightMatchingPairs();
void UnhighlightPairs();
public: // *** cedtViewFormat.cpp ***
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -