⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mydlgview.cpp

📁 一个vc编写的小游戏
💻 CPP
字号:
// MYDLGView.cpp : implementation of the CMYDLGView class
//

#include "stdafx.h"
#include "MYDLG.h"
#include "MyLine.h"
#include "MYDLGDoc.h"
#include "MYDLGView.h"
#include "PenDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMYDLGView

IMPLEMENT_DYNCREATE(CMYDLGView, CView)

BEGIN_MESSAGE_MAP(CMYDLGView, CView)
	//{{AFX_MSG_MAP(CMYDLGView)
	ON_WM_LBUTTONDOWN()
	ON_WM_LBUTTONUP()
	ON_WM_MOUSEMOVE()
	//ON_COMMAND(ID_OPTIONS_PEN, OnOptionsPen)
	//ON_UPDATE_COMMAND_UI(ID_OPTIONS_PEN, OnUpdateOptionsPen)
	//}}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()

/////////////////////////////////////////////////////////////////////////////
// CMYDLGView construction/destruction

CMYDLGView::CMYDLGView()
{
//	CMYDLGDoc *pDoc=GetDocument();
	m_Draw=0;///////////////////////
    m_hCursor=AfxGetApp()->LoadStandardCursor(IDC_CROSS);
    /*m_pWidth=1;
    m_pStyle=PEN_STYLE_SOLID;
    m_pColor=RGB(0,0,0);*/// TODO: add construction code here

}

CMYDLGView::~CMYDLGView()
{
}

BOOL CMYDLGView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMYDLGView drawing

void CMYDLGView::OnDraw(CDC* pDC)
{
    CMYDLGDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	int index;
    index=pDoc->GetTotalLine();
    while (index--)
    pDoc->GetLine(index)->DrawLine(pDC);
 
	   CPen newPen;
	   CPen *pOldPen;
	   switch(pDoc->m_pStyle)
	   {
	case PEN_STYLE_SOLID:
		newPen.CreatePen(PS_SOLID,pDoc->m_pWidth,pDoc->m_pColor);
		break;
	case PEN_STYLE_DASH:
		newPen.CreatePen(PS_DASH,pDoc->m_pWidth,pDoc->m_pColor);
		break;
	case PEN_STYLE_DOT:
		newPen.CreatePen(PS_DOT,pDoc->m_pWidth,pDoc->m_pColor);
		break;
	   }
      pOldPen=pDC->SelectObject(&newPen);
	if(pDoc->m_Tu=="Line")
	{
		pDC->MoveTo(pDoc->m_qx,pDoc->m_qy);
		pDC->LineTo(pDoc->m_zx,pDoc->m_zy);
		pDoc->AddLine(pDoc->m_qx,pDoc->m_qy,pDoc->m_zx,pDoc->m_zy,pDoc->m_pWidth,pDoc->m_pStyle,pDoc->m_pColor,pDoc->m_Tu);
	}// TODO: add draw code for native data here
	if(pDoc->m_Tu=="Rectangle")
	{
        pDC->Rectangle(pDoc->m_qx,pDoc->m_qy,pDoc->m_zx,pDoc->m_zy);
		pDoc->AddLine(pDoc->m_qx,pDoc->m_qy,pDoc->m_zx,pDoc->m_zy,pDoc->m_pWidth,pDoc->m_pStyle,pDoc->m_pColor,pDoc->m_Tu);
	}
	if(pDoc->m_Tu=="Ellipse")
	{
		pDC->Ellipse(pDoc->m_qx,pDoc->m_qy,pDoc->m_zx,pDoc->m_zy);
		pDoc->AddLine(pDoc->m_qx,pDoc->m_qy,pDoc->m_zx,pDoc->m_zy,pDoc->m_pWidth,pDoc->m_pStyle,pDoc->m_pColor,pDoc->m_Tu);
	}

}

/////////////////////////////////////////////////////////////////////////////
// CMYDLGView printing

BOOL CMYDLGView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMYDLGView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMYDLGView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CMYDLGView diagnostics

#ifdef _DEBUG
void CMYDLGView::AssertValid() const
{
	CView::AssertValid();
}

void CMYDLGView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CMYDLGDoc* CMYDLGView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMYDLGDoc)));
	return (CMYDLGDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMYDLGView message handlers

void CMYDLGView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	m_pOld=point;
    m_pOrigin=point;
    SetCapture();
	m_hCursor = AfxGetApp()->LoadCursor(IDC_MYCURSOR);
	SetCursor(m_hCursor);
    m_Draw=1;
    RECT rect;
    GetClientRect(&rect);
    ClientToScreen(&rect);
    ClipCursor(&rect);
	/*CMYDLGDoc *pDoc=GetDocument();
	m_pWidth=pDoc->m_pWidth;
    m_pStyle=pDoc->m_pStyle;
    m_pColor=pDoc->m_pColor;*/// TODO: Add your message handler code here and/or call default
	CView::OnLButtonDown(nFlags, point);
}

void CMYDLGView::OnLButtonUp(UINT nFlags, CPoint point) 
{
	  if (m_Draw)
	  {
        m_Draw=0;
        ReleaseCapture();
        ClipCursor(NULL);
	  }// TODO: Add your message handler code here and/or call default
	
	CView::OnLButtonUp(nFlags, point);
}

void CMYDLGView::OnMouseMove(UINT nFlags, CPoint point) 
{
	CClientDC dc(this);

	OnPrepareDC(&dc);
	dc.DPtoLP(&point);
    SetCursor(m_hCursor);
   if (m_Draw)
   {
	   CMYDLGDoc *pDoc=GetDocument();
	   CPen newPen;
	   CPen *pOldPen;
	   switch(pDoc->m_pStyle)
	   {
	case PEN_STYLE_SOLID:
		newPen.CreatePen(PS_SOLID,pDoc->m_pWidth,pDoc->m_pColor);
		break;
	case PEN_STYLE_DASH:
		newPen.CreatePen(PS_DASH,pDoc->m_pWidth,pDoc->m_pColor);
		break;
	case PEN_STYLE_DOT:
		newPen.CreatePen(PS_DOT,pDoc->m_pWidth,pDoc->m_pColor);
		break;
	   }
      pOldPen=dc.SelectObject(&newPen);
      dc.SetROP2(R2_NOT);
      dc.MoveTo(m_pOrigin);
      dc.LineTo(point);
	  pDoc->AddLine(m_pOrigin.x,m_pOrigin.y,point.x,point.y,pDoc->m_pWidth,pDoc->m_pStyle,pDoc->m_pColor,pDoc->m_Tu);
      m_pOrigin=point;
	  pDoc->UpdateAllViews(NULL);
	  dc.SelectObject(pOldPen);
	 
   }
   // TODO: Add your message handler code here and/or call default

  
	CView::OnMouseMove(nFlags, point);
}

/*void CMYDLGView::OnOptionsPen() 
{
	CPenDlg PenDialog;
    PenDialog.m_pWidth=m_pWidth;
    PenDialog.m_pStyle=m_pStyle;
	PenDialog.m_pColor=m_pColor;
    if(PenDialog.DoModal()==IDOK)
{
    m_pWidth=PenDialog.m_pWidth;
    m_pStyle=PenDialog.m_pStyle;
    m_pColor=PenDialog.m_pColor;
}// TODO: Add your command handler code here
	
}

void CMYDLGView::OnUpdateOptionsPen(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	
}
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -