ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

面向对象程序设计实验-使用MFC进行可视化编程

2021-06-03 00:02:27  阅读:257  来源: 互联网

标签:index MFC point int void EndY 面向对象 可视化 CMyLine


一、实验目的及要求

  1. 了解在集成开发环境下程序的编辑、编译、连接、运行与调试;

二、实验设备与平台

  1. 实验设备:计算机;
  2. 平台:Windows 2000操作系统,Visual C++ 6.0或Microsoft Visual Studio 2005/2008/2010/2012/2013。

三、实验内容与步骤
1.用MFC的向导创建编辑框,在编辑框中实现算术“加”、“减”、“乘”及“除”的运算,界面如图13-1所示。
在这里插入图片描述
部分代码如下:

void CMFCApplication2Dlg::OnClickedButtonride()
{
	UpdateData(true);
	mC = mA * mB;
	UpdateData(false);
}
void CMFCApplication2Dlg::OnClickedButtonadd()
{
	UpdateData(true);
	mC = mA + mB;
	UpdateData(false);
}
void CMFCApplication2Dlg::OnClickedButtondivide()
{
	UpdateData(true);
	mC = mA / mB;
	UpdateData(false);
}
void CMFCApplication2Dlg::OnClickedButtonsub()
{
	UpdateData(true);
	mC = mA - mB;
	UpdateData(false);
}
void CMFCApplication2Dlg::OnClickedButtonExit()
{
	ExitProcess(0);
}

2.利用文档/视图结构创建一个绘图板,使其能绘画各种直线,具有新建空白窗口,重画窗口时可以恢复直线等功能。]

void CMFCApplication2View::void OnDraw(CDC* pDC)
{
int index;
index=pDoc->GetTotalLine();
while(index--)
pDoc->GetLine(index)->DrawLine(pDC);
}
void CMFCApplication2View::OnLButtonDown(UINT nFlags, CPoint point)
{
	m_pOld = point;
	m_pOrigin = point;
	SetCapture();
	m_Draw = 1;
	RECT rect;
	GetClientRect(&rect);
	ClientToScreen(&rect);
	ClipCursor(&rect);
	CView::OnLButtonDown(nFlags, point);
}
void CMFCApplication2View::OnMouseMove(UINT nFlags, CPoint point)
{
	SetCursor(m_Hcursor);
	if (m_Draw)
	{
		CClientDC dc(this);
		dc.SetROP2(R2_NOT);
		dc.MoveTo(m_pOrigin);
		dc.LineTo(m_pOld);
		dc.MoveTo(m_pOrigin);
		dc.LineTo(point);
		m_pOld = point;
	}
	CView::OnMouseMove(nFlags, point);
}
void CMFCApplication2View::OnLButtonUp(UINT nFlags, CPoint point)
{
	if (m_Draw)
	{
		m_Draw = 0;
		ReleaseCapture();
		ClipCursor(NULL);
	}
	CView::OnLButtonUp(nFlags, point);
	CMFCApplication2Doc* pDoc = GetDocument();
	pDoc->AddLine(m_pOrigin.x, m_pOrigin.y, point.x, point.y);
}
MFCApplication2Doc.h
class CMyLine : public CObject
{
protected:
	int m_StartX;
	int m_StartY;
	int m_EndX;
	int m_EndY;
public:
	CMyLine(int StartX, int StartY, int EndX, int EndY);
	void DrawLine(CDC* pDC);
}
protected:
CObArray m_ObArray;
public:
void AddLine(int StartX, int StartY,int EndX,int EndY);
CMyLine *GetLine(int index);
int GetTotalLine();

class CMFCApplication2Doc : public CDocument
{
	virtual void DeleteContents();
protected:
	CObArray m_ObArray;
public:
	void AddLine(int StartX, int StartY, int EndX, int EndY);
	CMyLine* GetLine(int index);
	int GetTotalLine();
};

MFCApplication2Doc.cpp 
CMyLine::CMyLine(int StartX, int StartY,int EndX, int EndY)
{
  m_StartX=StartX;
  m_StartY=StartY;
  m_EndX=EndX;
  m_EndY=EndY;
};
void CMyLine::DrawLine(CDC*pDC)
{
 pDC->MoveTo(m_StartX,m_StartY);
 pDC->LineTo(m_EndX,m_EndY);
};
void CMyExamDoc::AddLine(int StartX, int StartY,int EndX,int EndY)
{
CMyLine *pMyLine = new CMyLine(StartX, StartY,EndX, EndY);
m_ObArray. Add(pMyLine);
};
CMyLine*CMyExamDoc::GetLine(int index)
{
if(index<0||index>m_ObArray.GetUpperBound())
return 0;
return(CMyLine*)m_ObArray.GetAt(index);
};
int CMyExamDoc::GetTotalLine()
{
return m_ObArray.GetSize();
};
void CMyExamDoc::DeleteContents()
{
int index;
index=m_ObArray.GetSize();
while(index--)
delete m_ObArray.GetAt(index);
m_ObArray.RemoveAll();
}

标签:index,MFC,point,int,void,EndY,面向对象,可视化,CMyLine
来源: https://blog.csdn.net/weixin_47178179/article/details/117488707

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有