《MFC Windows 程序设计》实验报告
2011 至 2012 学年第 二 学期
姓 名 | 系 别 | 实验地点 | |||
学 号 | windows程序设计第7版 年级、班 | 实验时间 | |||
实验项目 | 文档 / 视图结构和图形 | ||||
一、实验目的 1、了解数据在文档/视图结构程序中的位置,了解windows的设备描述环境和图形设备接口。 2、掌握在文档/视图结构的应用程序中数据对象初始化和操作函数的定义。 3、掌握填充功具画刷 ( CBrush ) 和画笔 ( CPen ) 的应用。 二、实验内容 编写一个应用程序,当按下鼠标左键时,在鼠标的光标位置会显示一个随机大小且填充颜随机的矩形 三、实验步骤: 1、用MFC AppWizard创建一个名称为 jkx的单文档应用程序框架。 2、在应用程序头文件StdAfx.h中加入包含命令。添加如下代码: #include <afxtempl.h> 3、在文档类声明中定义数组对象 m_ Rectag 。添加如下代码: class CJkxDoc : public CDocument { …… public: CArray<shap,shap &>m_ m_Rectag; ……. } 4、在文档类的构造函数中定义数组的大小,并添加定义填充颜的函数,添加如下代码: CJkxDoc::CJkxDoc() { m_Rectag.SetSize(256,256);} | |||||
#endif // _MSC_VER > 1000 struct shap //定义填充颜的函数 { CRect rect; int color; }; 5、在视图类的OnLButtonDown函数中设置指向文档的指针并通过该指针获取文档的成员。 添加如下代码: void CJkxView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default shap aa; CJkxDoc*pDoc=GetDocument(); int rnd=rand()%50+5; int r,g,b; r=rand()%256; g=rand()%256; b=rand()%256; aa.color=RGB(r,g,b); CRect rect(point.x-rnd,point.y-rnd,point.x+rnd,point.y+rnd); aa.rect=rect; pDoc->m_Rect.Add(aa); InvalidateRect(rect,false); CView::OnLButtonDown(nFlags, point); } 6、在OnDraw函数中画出数组中的矩形。添加如下代码: void CJkxView::OnDraw(CDC* pDC) { CJkxDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here int red=rand()%256,green=rand()%256,blue=rand()%256; int width=2; for(int i=0;i<pDoc->m_Rectag.GetSize();i++) { CPen newPen(PS_SOLID,width,pDoc->m_Rect[i].color); CBrush newBrush(pDoc->m_Rect[i].color); CPen * oldPen=pDC->SelectObject(&newPen); CBrush *oldBrush=pDC->SelectObject(&newBrush); pDC->Ellipse(pDoc->m_Rectag[i].rect); pDC->SelectObject(oldPen); pDC->SelectObject(oldBrush); } } |
四、实验结果(反思) |
实验完成情况:完成 基本完成 未完成
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论