?? viewcutview.cpp
字號:
// viewcutView.cpp : implementation of the CViewcutView class
//
#include "stdafx.h"
#include "viewcut.h"
#include "viewcutDoc.h"
#include "viewcutView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CViewcutView
IMPLEMENT_DYNCREATE(CViewcutView, CView)
BEGIN_MESSAGE_MAP(CViewcutView, CView)
//{{AFX_MSG_MAP(CViewcutView)
ON_COMMAND(ID_Clear, OnClear)
ON_COMMAND(ID_Ellipse, OnEllipse)
ON_COMMAND(ID_Line, OnLine)
ON_COMMAND(ID_Rectangle, OnRectangle)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_COMMAND(ID_changecolor, Onchangecolor)
ON_COMMAND(ID_changefont, Onchangefont)
ON_COMMAND(ID_Brush, OnBrush)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CViewcutView construction/destruction
CViewcutView::CViewcutView()
{
drawflay=false;
drawtype=-1;
}
CViewcutView::~CViewcutView()
{
}
BOOL CViewcutView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CViewcutView drawing
void CViewcutView::OnDraw(CDC* pDC)
{
CViewcutDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CString str;
str.Format("%6f",result);
pDC->TextOut(200,200,str);
CFont font;
//通過LOGFONT結構創建字體
font.CreateFontIndirect(&pDoc->logfont);
//將字體選入設備環境
CFont *oldfont=pDC->SelectObject(&font);
pDC->SetTextAlign(TA_CENTER);//可去除
//設置字體顏色
pDC->SetTextColor(pDoc->color);
pDC->TextOut(100,100,"太平天國");
OnBrush(pDC);
//恢復設備環境
pDC->SelectObject(oldfont);//可去除
//刪除字體
font.DeleteObject();//可去除
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CViewcutView printing
BOOL CViewcutView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CViewcutView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CViewcutView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CViewcutView diagnostics
#ifdef _DEBUG
void CViewcutView::AssertValid() const
{
CView::AssertValid();
}
void CViewcutView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CViewcutDoc* CViewcutView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CViewcutDoc)));
return (CViewcutDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CViewcutView message handlers
void CViewcutView::OnClear()
{
Invalidate();
}
void CViewcutView::OnEllipse()
{
drawtype=2;
}
void CViewcutView::OnLine()
{
drawtype=0;
}
void CViewcutView::OnRectangle()
{
drawtype=1;
}
void CViewcutView::OnLButtonDown(UINT nFlags, CPoint point)
{
drawflay=true;
startpoint=endpoint=point;
CView::OnLButtonDown(nFlags, point);
}
void CViewcutView::OnLButtonUp(UINT nFlags, CPoint point)
{
drawflay=false;
startpoint=endpoint=point;
CView::OnLButtonUp(nFlags, point);
}
void CViewcutView::OnMouseMove(UINT nFlags, CPoint point)
{
CViewcutDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CClientDC dc(this);
dc.SetROP2(R2_NOTXORPEN);
CPen mypen;
mypen.CreatePen(PS_SOLID,3,pDoc->color);
dc.SelectObject(&mypen);
if(drawflay)
{
switch(drawtype)
{case 0:dc.MoveTo(startpoint);dc.LineTo(endpoint);endpoint=point;
dc.MoveTo(startpoint);dc.LineTo(endpoint);break;
case 1:dc.Rectangle(startpoint.x,startpoint.y,endpoint.x,endpoint.y);
endpoint=point;
dc.Rectangle(startpoint.x,startpoint.y,endpoint.x,endpoint.y);break;
case 2:dc.Ellipse(startpoint.x,startpoint.y,endpoint.x,endpoint.y);endpoint=point;
dc.Ellipse(startpoint.x,startpoint.y,endpoint.x,endpoint.y);break;
}
}
mypen.DeleteObject();
CView::OnMouseMove(nFlags, point);
}
void CViewcutView::Onchangecolor()
{
CViewcutDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//生成標準字體對話框
CColorDialog cd;
if(cd.DoModal()==IDOK)
{
//獲取用戶選擇的顏色
pDoc->color=cd.GetColor();
}
}
void CViewcutView::Onchangefont()
{
CViewcutDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//生成標準字體對話框
CFontDialog cd;
if(cd.DoModal()==IDOK)
{
//獲取用戶選擇的字體
cd.GetCurrentFont(&pDoc->logfont);
Invalidate();
}
}
void CViewcutView::OnBrush(CDC *pDC)
{
UINT i,pos,gap,width;
CRect rc;
GetClientRect(&rc);
pos=20;
gap=35;
width=rc.Width()-40;
CBrush br,*obr;
CViewcutDoc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
//使用6種花紋繪制圓角矩形
for(i=0;i<6;i++)
{ //創建一個帶花紋的畫刷
br.CreateHatchBrush(i,pDoc->color);
obr=pDC->SelectObject(&br); //將畫刷選入設備環境
//繪制圓角矩形
pDC->RoundRect(pos,pos+i*gap,pos+width,pos+i*gap+30,pos+20,pos+20);
pDC->SelectObject(obr); //恢復原來的繪圖設備環境
//刪除畫刷
br.DeleteObject();//由于下面還要調用br.CreateSolidBrush(),因此這一句代碼是必須的
}
//最后使用實填充畫刷繪制矩形
br.CreateSolidBrush(pDoc->color);
obr=pDC->SelectObject(&br);
pDC->RoundRect(pos,pos+i*gap,pos+width,pos+i*gap+30,pos+20,pos+20);
pDC->SelectObject(obr);
br.DeleteObject();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -