?? sketcherview.cpp
字號:
// sketcherView.cpp : CsketcherView 類的實現
//
#include "stdafx.h"
#include "sketcher.h"
#include "Ele.h"
#include "sketcherDoc.h"
#include "sketcherView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CsketcherView
IMPLEMENT_DYNCREATE(CsketcherView, CView)
BEGIN_MESSAGE_MAP(CsketcherView, CView)
// 標準打印命令
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()
// CsketcherView 構造/析構
CsketcherView::CsketcherView()
: m_pTempEle(NULL)
, m_FirPo(CPoint(0,0))
, m_SecPo(CPoint(0,0))
{
// TODO: 在此處添加構造代碼
}
CsketcherView::~CsketcherView()
{
}
BOOL CsketcherView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此處通過修改
// CREATESTRUCT cs 來修改窗口類或樣式
return CView::PreCreateWindow(cs);
}
// CsketcherView 繪制
void CsketcherView::OnDraw(CDC* pDC)
{
CsketcherDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 在此處為本機數據添加繪制代碼
}
// CsketcherView 打印
BOOL CsketcherView::OnPreparePrinting(CPrintInfo* pInfo)
{
// 默認準備
return DoPreparePrinting(pInfo);
}
void CsketcherView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 添加額外的打印前進行的初始化過程
}
void CsketcherView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: 添加打印后進行的清除過程
}
// CsketcherView 診斷
#ifdef _DEBUG
void CsketcherView::AssertValid() const
{
CView::AssertValid();
}
void CsketcherView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CsketcherDoc* CsketcherView::GetDocument() const // 非調試版本是內聯的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CsketcherDoc)));
return (CsketcherDoc*)m_pDocument;
}
#endif //_DEBUG
// CsketcherView 消息處理程序
void CsketcherView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息處理程序代碼和/或調用默認值
CView::OnLButtonDown(nFlags, point);
m_FirPo = point;
}
void CsketcherView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息處理程序代碼和/或調用默認值
CView::OnLButtonUp(nFlags, point);
if(m_pTempEle)
{
delete m_pTempEle;
m_pTempEle = 0;
}
}
void CsketcherView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息處理程序代碼和/或調用默認值
CView::OnMouseMove(nFlags, point);
CClientDC aDC(this);
aDC.SetROP2(R2_NOTXORPEN);
if(nFlags & MK_LBUTTON)
{
m_SecPo = point;
if(m_pTempEle)
{
if(CURVE == GetDocument()->GetEleType())
{
static_cast<CCurve*>(m_pTempEle)->AddSeg(m_SecPo);
m_pTempEle->Draw(&aDC);
return;
}
if(DIAN == GetDocument()->GetEleType())
{
static_cast<CDian*>(m_pTempEle)->AddSegDian(m_SecPo);
m_pTempEle->Draw(&aDC);
return;
}
m_pTempEle->Draw(&aDC);
delete m_pTempEle;
m_pTempEle = 0;
}
m_pTempEle = CreateEle();
m_pTempEle->Draw(&aDC);
}
}
CEle* CsketcherView::CreateEle(void)
{
CsketcherDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
switch(pDoc->GetEleType())
{case LINE:
return new CLine(m_FirPo,m_SecPo,pDoc->GetEleColor());
case RECTANGLE:
return new CRec(m_FirPo,m_SecPo,pDoc->GetEleColor());
case DIAN:
return new CDian(m_FirPo,m_SecPo,pDoc->GetEleColor());
case CIRCLE:
return new CCir(m_FirPo,m_SecPo,pDoc->GetEleColor());
case TUOYUAN:
return new CTuo(m_FirPo,m_SecPo,pDoc->GetEleColor());
case CURVE:
return new CCurve(m_FirPo,m_SecPo,pDoc->GetEleColor());
default:
AfxMessageBox(_T("BAD ELEMENT CODE"),MB_OK);
AfxAbort();
return NULL;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -