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

📄 childview.cpp

📁 对C++的一个综合运用
💻 CPP
字号:
// ChildView.cpp : CChildView 类的实现
//

#include "stdafx.h"
#include "HelloN.h"
#include "ChildView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CChildView

CChildView::CChildView()
{
	CurrentDraw=-1;
	penColor=brushColor=RGB(0,0,0);
	pm.CreatePopupMenu();
	pm.AppendMenu(MF_ENABLED,ID_DRAW_LINE,_T("Draw a Line"));
	pm.AppendMenu(MF_ENABLED,ID_DRAW_RECTANGLE,_T("Rectangle"));
	pm.AppendMenu(MF_ENABLED,ID_DRAW_CIRCLE,_T("Circle"));
	pm.AppendMenu(MF_ENABLED,ID_133,_T("Ellipse"));
	pm.AppendMenu(MF_ENABLED,ID_DRAW_TEXT,_T("Draw a Text"));

}

CChildView::~CChildView()
{
}


BEGIN_MESSAGE_MAP(CChildView, CWnd)
	ON_WM_PAINT()
	ON_COMMAND(ID_DRAW_LINE, OnDrawLine)
	ON_COMMAND(ID_DRAW_RECTANGLE, OnDrawRectangle)
	ON_COMMAND(ID_DRAW_CIRCLE, OnDrawCircle)
	ON_COMMAND(ID_133, On133)
	ON_COMMAND(ID_DRAW_TEXT, OnDrawText)
	ON_WM_CONTEXTMENU()
	ON_COMMAND(ID_DRAW_PENCOLOR, OnDrawPencolor)
	ON_COMMAND(ID_DRAW_BRUSHCOLOR, OnDrawBrushcolor)
END_MESSAGE_MAP()



// CChildView 消息处理程序

BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) 
{
	if (!CWnd::PreCreateWindow(cs))
		return FALSE;

	cs.dwExStyle |= WS_EX_CLIENTEDGE;
	cs.style &= ~WS_BORDER;
	cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, 
		::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), NULL);

	return TRUE;
}

void CChildView::OnPaint() 
{
	CPaintDC dc(this); // 用于绘制的设备上下文
//	dc.SelectStockObject(BLACK_PEN);
//	dc.SelectStockObject(DKGRAY_BRUSH);
	CPen pen,*poldpen;
//	pen.CreatePen(PS_DASH,1,RGB(255,0,0));
	pen.CreatePen(PS_DOT,1,penColor);
	poldpen=dc.SelectObject(&pen);
	CBrush brush,*pbs;
//	brush.CreateSolidBrush(RGB(50,120,0));
	brush.CreateSolidBrush(brushColor);
	pbs=dc.SelectObject(&brush);

	// TODO: 在此处添加消息处理程序代码
    switch(CurrentDraw)
	{case 0:
	    dc.MoveTo(50,50);
	    dc.LineTo(300,150);
		break;
	case 1:
        dc.Rectangle(70,80,340,200);
		break;
	case 2:
	    dc.Ellipse(50,50,250,250);
		break;
	case 3:
	    dc.Ellipse(50,60,350,280);
		break;
	case 4:
		dc.TextOut(150,300,"Hello,world!");
		break;
	}
	dc.SelectObject(poldpen);
    dc.SelectObject(pbs);
	// 不要为绘制消息而调用 CWnd::OnPaint()
}


void CChildView::OnDrawLine()
{
	// TODO: 在此添加命令处理程序代码
    CurrentDraw=0;
	Invalidate();
}

void CChildView::OnDrawRectangle()
{
	// TODO: 在此添加命令处理程序代码
    CurrentDraw=1;
	Invalidate();
}

void CChildView::OnDrawCircle()
{
	// TODO: 在此添加命令处理程序代码
    CurrentDraw=2;
	Invalidate();
}

void CChildView::On133()//Ellipse
{
	// TODO: 在此添加命令处理程序代码
    CurrentDraw=3;
	Invalidate();
}

void CChildView::OnDrawText()
{
	// TODO: 在此添加命令处理程序代码
    CurrentDraw=4;
	Invalidate();

}

void CChildView::OnContextMenu(CWnd* pWnd, CPoint point)
{
	// TODO: 在此添加消息处理程序代码
	pm.TrackPopupMenu(TPM_RIGHTALIGN | TPM_LEFTBUTTON,point.x,point.y,this);
}

void CChildView::OnDrawPencolor()
{
	// TODO: 在此添加命令处理程序代码
	CColorDialog dlg;
	if(dlg.DoModal()==IDOK)
	{
		penColor=dlg.GetColor();
        Invalidate();
	}
}

void CChildView::OnDrawBrushcolor()
{
	// TODO: 在此添加命令处理程序代码
	CColorDialog dlg;
	if(dlg.DoModal()==IDOK)
	{
		brushColor=dlg.GetColor();
        Invalidate();
	}
}

⌨️ 快捷键说明

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