VC mfc制作当用户不停点击时出现满屏气球步骤及代码
时间: 2023-09-18 17:13:01 浏览: 160
以下是VC MFC制作当用户不停点击时出现满屏气球的简单步骤和代码:
1. 首先,在资源编辑器中添加一个气球图标(.ico格式)作为气球的图案。
2. 在对话框类的头文件中添加以下成员变量:
```c++
CArray<CPoint, CPoint&> m_arrPoints; // 气球数组
CBitmap m_bmpBalloon; // 气球位图
int m_nBalloonWidth; // 气球宽度
int m_nBalloonHeight; // 气球高度
```
3. 在OnInitDialog()函数中初始化气球数组和气球位图:
```c++
// 初始化气球数组
m_arrPoints.RemoveAll();
// 初始化气球位图
m_bmpBalloon.LoadBitmap(IDB_BALLOON);
BITMAP bmp;
m_bmpBalloon.GetBitmap(&bmp);
m_nBalloonWidth = bmp.bmWidth;
m_nBalloonHeight = bmp.bmHeight;
```
4. 在OnLButtonDown()函数中添加以下代码:
```c++
// 添加气球到数组中
CPoint ptClick = point;
m_arrPoints.Add(ptClick);
// 刷新窗口
Invalidate();
```
5. 在OnPaint()函数中添加以下代码:
```c++
CPaintDC dc(this);
// 绘制气球
CDC memDC;
memDC.CreateCompatibleDC(&dc);
memDC.SelectObject(&m_bmpBalloon);
for (int i = 0; i < m_arrPoints.GetSize(); i++)
{
CPoint pt = m_arrPoints[i];
dc.BitBlt(pt.x, pt.y, m_nBalloonWidth, m_nBalloonHeight, &memDC, 0, 0, SRCCOPY);
}
```
6. 最后,在资源编辑器中添加一个定时器,并在类的头文件中添加以下函数:
```c++
afx_msg void OnTimer(UINT_PTR nIDEvent); // 定时器处理函数
```
在类的实现文件中添加以下代码:
```c++
BEGIN_MESSAGE_MAP(CMyDlg, CDialogEx)
ON_WM_LBUTTONDOWN()
ON_WM_PAINT()
ON_WM_TIMER()
END_MESSAGE_MAP()
void CMyDlg::OnTimer(UINT_PTR nIDEvent)
{
CRect rect;
GetClientRect(&rect);
// 随机添加气球
int nCount = rand() % 5 + 1;
for (int i = 0; i < nCount; i++)
{
int x = rand() % (rect.right - m_nBalloonWidth);
int y = rand() % (rect.bottom - m_nBalloonHeight);
m_arrPoints.Add(CPoint(x, y));
}
// 刷新窗口
Invalidate();
CDialogEx::OnTimer(nIDEvent);
}
```
在OnInitDialog()函数中启动定时器:
```c++
SetTimer(1, 1000 / 60, NULL);
```
这样就完成了VC MFC制作当用户不停点击时出现满屏气球的简单步骤和代码。
阅读全文