随鼠标走的矩形

案例:编写一个应用程序,当按下鼠标左键时,在鼠标的光标位置会显示一个随机大小的矩形。如下图所示:

关键技术:

      首先,定义一个用于存放矩形数据的数组m_Rectag,然后用库函数rand和对应的辅助计算产生描述矩形尺寸的CRect类型数据,并将数据存入数组中,最后在OnDraw()函数中显示该数组表示的矩形。

步骤:

1)用MFC AppWizard[exe]创建一个名称为Gun2的单文档应用程序框架。

2)打开FileView选项卡,点击Header Files/StdAdx.h,在StdAdx.h中添加包含命令:#include <afxtempl.h>,如下:

   

3)在视图类CGun2View.h的声明中,定义一个存放CRect类型元素的数组m_Rectag;

class CGun2View : public CView
{

// Operations
public:
	CArray <CRect,CRect&> m_Rectag;
....
}

4)在视图类CGun2View.cpp的构造函数中,定义m_Rectag数组的大小;

CGun2View::CGun2View()
{
	// TODO: add construction code here
	m_Rectag.SetSize(256,256);
}

5)在视图类的左键按下消息响应函数中,将每次单击鼠标产生的矩形数据存入数组;

void CGun2View::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	int r=rand()%50+5;
	CRect Ret(point.x-r,point.y-r,point.x+r,point.y+r);
	m_Rectag.Add(Ret);
	InvalidateRect(Ret,FALSE);//触发OnDraw函数
	CView::OnLButtonDown(nFlags, point);
}

6)在视图类的WM_PAINT消息响应函数中,重画数组中的矩形;

void CGun2View::OnDraw(CDC* pDC)
{
	CGun2Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here

	for(int i=0;i<m_Rectag.GetSize();i++)
		pDC->Rectangle(m_Rectag[i]);
}




 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanqima

一键三连,多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值