📄 paintdoc.cpp
字号:
// paintdoc.cpp : implementation of the CPaintDoc class
//
#include "stdafx.h"
#include "paint.h"
#include "paintdoc.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPaintDoc
IMPLEMENT_DYNCREATE(CPaintDoc, CDocument)
BEGIN_MESSAGE_MAP(CPaintDoc, CDocument)
//{{AFX_MSG_MAP(CPaintDoc)
ON_COMMAND(ID_SHAPES_ARC, OnShapesArc)
ON_UPDATE_COMMAND_UI(ID_SHAPES_ARC, OnUpdateShapesArc)
ON_COMMAND(ID_SHAPES_CHORD, OnShapesChord)
ON_UPDATE_COMMAND_UI(ID_SHAPES_CHORD, OnUpdateShapesChord)
ON_COMMAND(ID_SHAPES_ELLIPSE, OnShapesEllipse)
ON_UPDATE_COMMAND_UI(ID_SHAPES_ELLIPSE, OnUpdateShapesEllipse)
ON_COMMAND(ID_SHAPES_PIE, OnShapesPie)
ON_UPDATE_COMMAND_UI(ID_SHAPES_PIE, OnUpdateShapesPie)
ON_COMMAND(ID_SHAPES_POLYGON, OnShapesPolygon)
ON_UPDATE_COMMAND_UI(ID_SHAPES_POLYGON, OnUpdateShapesPolygon)
ON_COMMAND(ID_SHAPES_POLYLINE, OnShapesPolyline)
ON_UPDATE_COMMAND_UI(ID_SHAPES_POLYLINE, OnUpdateShapesPolyline)
ON_COMMAND(ID_SHAPES_RECTANGE, OnShapesRectange)
ON_UPDATE_COMMAND_UI(ID_SHAPES_RECTANGE, OnUpdateShapesRectange)
ON_COMMAND(ID_SHAPES_ROUNDRECT, OnShapesRoundrect)
ON_UPDATE_COMMAND_UI(ID_SHAPES_ROUNDRECT, OnUpdateShapesRoundrect)
ON_COMMAND(ID_OPTIONS_DRAWPOINTS, OnOptionsDrawpoints)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_DRAWPOINTS, OnUpdateOptionsDrawpoints)
ON_COMMAND(ID_MODES_POLYFILL, OnModesPolyfill)
ON_UPDATE_COMMAND_UI(ID_MODES_POLYFILL, OnUpdateModesPolyfill)
ON_COMMAND(ID_MODES_ROP2, OnModesRop2)
ON_UPDATE_COMMAND_UI(ID_MODES_ROP2, OnUpdateModesRop2)
ON_COMMAND(ID_OPTIONS_BRUSHSTYLE, OnOptionsBrushstyle)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_BRUSHSTYLE, OnUpdateOptionsBrushstyle)
ON_COMMAND(ID_OPTIONS_PENSTYLE, OnOptionsPenstyle)
ON_UPDATE_COMMAND_UI(ID_OPTIONS_PENSTYLE, OnUpdateOptionsPenstyle)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPaintDoc construction/destruction
CPaintDoc::CPaintDoc()
{
// TODO: add one-time construction code here
}
CPaintDoc::~CPaintDoc()
{
}
BOOL CPaintDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
m_nArraySize = 0;
m_nTopElement = -1;
m_bDrawPoints = TRUE;
m_nPColor = m_nBColor = RGB (0, 0, 0);
m_nPStyle = PS_SOLID;
m_csPStyle = "PS_SOLID";
m_nBStyle = -1;
m_csBStyle = "SOLID";
m_nShape = NO_SHAPE;
m_nShapeSize = 50;
m_nPolyFill = ALTERNATE;
m_nROP2Mode = R2_COPYPEN;
m_csROP2 = "R2_COPYPEN";
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CPaintDoc serialization
void CPaintDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CPaintDoc diagnostics
#ifdef _DEBUG
void CPaintDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CPaintDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CPaintDoc commands
void CPaintDoc::OnShapesArc()
{
// TODO: Add your command handler code here
m_nShape = ARC;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateShapesArc(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetRadio(m_nShape == ARC);
}
void CPaintDoc::OnShapesChord()
{
// TODO: Add your command handler code here
m_nShape = CHORD;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateShapesChord(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetRadio(m_nShape == CHORD);
}
void CPaintDoc::OnShapesEllipse()
{
// TODO: Add your command handler code here
m_nShape = ELLIPSE;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateShapesEllipse(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetRadio(m_nShape == ELLIPSE);
}
void CPaintDoc::OnShapesPie()
{
// TODO: Add your command handler code here
m_nShape = PIE;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateShapesPie(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetRadio(m_nShape == PIE);
}
void CPaintDoc::OnShapesPolygon()
{
// TODO: Add your command handler code here
m_nShape = POLYGON;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateShapesPolygon(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetRadio(m_nShape == POLYGON);
}
void CPaintDoc::OnShapesPolyline()
{
// TODO: Add your command handler code here
m_nShape = POLYLINE;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateShapesPolyline(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetRadio(m_nShape == POLYLINE);
}
void CPaintDoc::OnShapesRectange()
{
// TODO: Add your command handler code here
m_nShape = RECTANGLE;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateShapesRectange(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetRadio(m_nShape == RECTANGLE);
}
void CPaintDoc::OnShapesRoundrect()
{
// TODO: Add your command handler code here
m_nShape = ROUNDRECT;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateShapesRoundrect(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetRadio(m_nShape == ROUNDRECT);
}
void CPaintDoc::OnOptionsDrawpoints()
{
// TODO: Add your command handler code here
m_bDrawPoints = !m_bDrawPoints;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateOptionsDrawpoints(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
pCmdUI->SetCheck(m_bDrawPoints);
}
void CPaintDoc::OnModesPolyfill()
{
if (m_nPolyFill == ALTERNATE)
m_nPolyFill = WINDING;
else
m_nPolyFill = ALTERNATE;
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateModesPolyfill(CCmdUI* pCmdUI)
{
if (m_nPolyFill == ALTERNATE)
pCmdUI->SetText("PolyFill: ALTERNATE");
else
pCmdUI->SetText("PolyFill: WINDING");
}
void CPaintDoc::OnModesRop2()
{
switch (m_nROP2Mode)
{
case R2_BLACK:
m_nROP2Mode = R2_WHITE;
m_csROP2 = "R2_WHITE";
break;
case R2_WHITE:
m_nROP2Mode = R2_NOP;
m_csROP2 = "R2_NOP";
break;
case R2_NOP:
m_nROP2Mode = R2_NOT;
m_csROP2 = "R2_NOT";
break;
case R2_NOT:
m_nROP2Mode = R2_COPYPEN;
m_csROP2 = "R2_COPYPEN";
break;
case R2_COPYPEN:
m_nROP2Mode = R2_NOTCOPYPEN;
m_csROP2 = "R2_NOTCOPYPEN";
break;
case R2_NOTCOPYPEN:
m_nROP2Mode = R2_MERGEPENNOT;
m_csROP2 = "R2_MERGEPENNOT";
break;
case R2_MERGEPENNOT:
m_nROP2Mode = R2_MASKPENNOT;
m_csROP2 = "R2_MASKPENNOT";
break;
case R2_MASKPENNOT:
m_nROP2Mode = R2_MERGENOTPEN;
m_csROP2 = "R2_MERGENOTPEN";
break;
case R2_MERGENOTPEN:
m_nROP2Mode = R2_MASKNOTPEN;
m_csROP2 = "R2_MASKNOTPEN";
break;
case R2_MASKNOTPEN:
m_nROP2Mode = R2_MERGEPEN;
m_csROP2 = "R2_MERGEPEN";
break;
case R2_MERGEPEN:
m_nROP2Mode = R2_NOTMERGEPEN;
m_csROP2 = "R2_NOTMERGEPEN";
break;
case R2_NOTMERGEPEN:
m_nROP2Mode = R2_MASKPEN;
m_csROP2 = "R2_MASKPEN";
break;
case R2_MASKPEN:
m_nROP2Mode = R2_NOTMASKPEN;
m_csROP2 = "R2_NOTMASKPEN";
break;
case R2_NOTMASKPEN:
m_nROP2Mode = R2_XORPEN;
m_csROP2 = "R2_XORPEN";
break;
case R2_XORPEN:
m_nROP2Mode = R2_NOTXORPEN;
m_csROP2 = "R2_NOTXORPEN";
break;
default:
m_nROP2Mode = R2_BLACK;
m_csROP2 = "R2_BLACK";
break;
}
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateModesRop2(CCmdUI* pCmdUI)
{
pCmdUI->SetText("ROP2 Mode: " + m_csROP2);
}
void CPaintDoc::OnOptionsBrushstyle()
{
switch (m_nBStyle)
{
case HS_BDIAGONAL:
m_nBStyle = HS_CROSS;
m_csBStyle = "HS_CROSS";
break;
case HS_CROSS:
m_nBStyle = HS_DIAGCROSS;
m_csBStyle = "HS_DIAGCROSS";
break;
case HS_DIAGCROSS:
m_nBStyle = HS_FDIAGONAL;
m_csBStyle = "HS_FDIAGONAL";
break;
case HS_FDIAGONAL:
m_nBStyle = HS_HORIZONTAL;
m_csBStyle = "HS_HORIZONTAL";
break;
case HS_HORIZONTAL:
m_nBStyle = HS_VERTICAL;
m_csBStyle = "HS_VERTICAL";
break;
case HS_VERTICAL:
m_nBStyle = -1;
m_csBStyle = "SOLID";
break;
default:
m_nBStyle = HS_BDIAGONAL;
m_csBStyle = "HS_BDIAGONAL";
break;
}
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateOptionsBrushstyle(CCmdUI* pCmdUI)
{
pCmdUI->SetText("Brush &Hatch: " + m_csBStyle);
}
void CPaintDoc::OnOptionsPenstyle()
{
switch (m_nPStyle)
{
case PS_SOLID:
m_nPStyle = PS_DASH;
m_csPStyle = "PS_DASH";
break;
case PS_DASH:
m_nPStyle = PS_DOT;
m_csPStyle = "PS_DOT";
break;
case PS_DOT:
m_nPStyle = PS_DASHDOT;
m_csPStyle = "PS_DASHDOT";
break;
case PS_DASHDOT:
m_nPStyle = PS_DASHDOTDOT;
m_csPStyle = "PS_DASHDOTDOT";
break;
case PS_DASHDOTDOT:
m_nPStyle = PS_NULL;
m_csPStyle = "PS_NULL";
break;
case PS_NULL:
m_nPStyle = PS_INSIDEFRAME;
m_csPStyle = "PS_INSIDEFRAME";
break;
default:
m_nPStyle = PS_SOLID;
m_csPStyle = "PS_SOLID";
break;
}
UpdateAllViews(NULL);
}
void CPaintDoc::OnUpdateOptionsPenstyle(CCmdUI* pCmdUI)
{
pCmdUI->SetText("Pen Style: " + m_csPStyle);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -