【VC开源代码栏目提醒】:网学会员为广大网友收集整理了,COLOREDITVIEW.CPP,希望对大家有所帮助!
// ColorEditView.cpp : implementation of the CColorEditView class
//
// Copyright (c) 1996-1997, Keith Rule
// You may freely use or modify this code provided this
// copyright is included in all derived versions.
#include "stdafx.h"
#include "ColorEdit.h"
#include "ColorEditDoc.h"
#include "ColorEditView.h"
#include "Search.h"
#include <afxadv.h>
const int ScrollTimer = 2;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CColorEditView
IMPLEMENT_DYNCREATE(CColorEditView, CScrollView)
BEGIN_MESSAGE_MAP(CColorEditView, CScrollView)
//{{AFX_MSG_MAP(CColorEditView)
ON_WM_ERASEBKGND()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_SETCURSOR()
ON_COMMAND(ID_EDIT_UNDO, OnEditUndo)
ON_UPDATE_COMMAND_UI(ID_EDIT_UNDO, OnUpdateEditUndo)
ON_COMMAND(ID_EDIT_REDO, OnEditRedo)
ON_UPDATE_COMMAND_UI(ID_EDIT_REDO, OnUpdateEditRedo)
ON_WM_CHAR()
ON_COMMAND(ID_EDIT_FIND, OnEditFind)
ON_UPDATE_COMMAND_UI(ID_EDIT_FIND, OnUpdateEditFind)
ON_WM_LBUTTONDBLCLK()
ON_COMMAND(ID_EDIT_COPY, OnEditCopy)
ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)
ON_COMMAND(ID_EDIT_CUT, OnEditCut)
ON_UPDATE_COMMAND_UI(ID_EDIT_CUT, OnUpdateEditCut)
ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)
ON_UPDATE_COMMAND_UI(ID_EDIT_PASTE, OnUpdateEditPaste)
ON_WM_KEYDOWN()
ON_WM_TIMER()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CColorEditView construction/destruction
CColorEditView::CColorEditView()
{
m_tabSize = 4;
m_indent = 10;
m_selectStart = m_selectEnd = -1;
m_caret = 0;
m_mouseMove = m_mouseDown = FALSE;
m_caretPos = CPoint(0, 0);
m_caretVisible = FALSE;
m_scrollTimerEnabled = FALSE;
}
CColorEditView::~CColorEditView()
{
}
BOOL CColorEditView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CScrollView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CColorEditView drawing
void CColorEditView::OnDraw(CDC* dc)
{
CColorEditDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CalcScrollSize(dc);
CMemDC pDC(dc);
long lineStart, lineStop;
LOGFONT lf;
CPoint scrollPos = GetScrollPosition();
CRect rcBounds;
if (pDC->IsPrinting()) {
m_font.GetLogFont(&lf);
CFont* oldFont = pDC->SelectObject(&m_font);
CPoint caret = GetCaretPos(pDC, m_indent);
if (CPoint(caret-scrollPos) != m_caretPos) {
m_caretPos = CPoint(caret-scrollPos);
SetCaretPos(m_caretPos);
}
TRACE(_T("m_nPageStartLine = %d, m_nPageEndLine = %d, lineCount = %d\r\n"), m_nPageStartLine, m_nPageEndLine, pDoc->GetLineCount());
for (int i = m_nPageStartLine; i < m_nPageEndLine && i < pDoc->GetLineCount(); i++) {
DrawText(pDC, CPoint(m_indent, ((i-m_nPageStartLine)*lf.lfHeight)), i, FALSE);
}
pDC->SelectObject(oldFont);
} else {
GetClientRect(&rcBounds);
rcBounds += scrollPos;
pDC->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
m_font.GetLogFont(&lf);
CFont* oldFont = pDC->SelectObject(&m_font);
CPoint caret = GetCaretPos(pDC, m