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小时内删除。