MFC画硬币并进行增减
时间: 2023-07-11 13:36:09 浏览: 60
要在MFC中画硬币并进行增减操作,可以按照以下步骤进行操作:
1. 在对话框中添加两个按钮,一个用于增加硬币数量,一个用于减少硬币数量,设置它们的ID分别为IDC_BUTTON_ADD和IDC_BUTTON_MINUS。
2. 在类向导中,添加两个变量m_buttonAdd和m_buttonMinus分别对应按钮ID为IDC_BUTTON_ADD和IDC_BUTTON_MINUS的按钮。
3. 修改OnInitDialog函数,初始化硬币数量为0,并将其显示在静态文本框中。
4. 在按钮的响应函数中,实现增加和减少硬币数量的功能,并重新绘制硬币。
下面是代码的实现:
1. 在头文件中添加以下成员变量:
```
int m_nCoinNum; // 硬币数量
```
2. 修改OnInitDialog函数:
```
BOOL CMyDialogDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 设置静态文本框的背景色为黑色
m_static.SetBackgroundColor(RGB(0, 0, 0));
// 初始化硬币数量为0,并将其显示在静态文本框中
m_nCoinNum = 0;
UpdateCoinNum();
return TRUE;
}
```
3. 实现UpdateCoinNum函数,用于更新静态文本框中硬币数量的显示:
```
void CMyDialogDlg::UpdateCoinNum()
{
CString strCoinNum;
strCoinNum.Format(_T("%d"), m_nCoinNum);
m_static.SetWindowText(strCoinNum);
}
```
4. 在按钮的响应函数中,实现增加和减少硬币数量的功能,并重新绘制硬币:
```
void CMyDialogDlg::OnBnClickedButtonAdd()
{
m_nCoinNum++; // 增加硬币数量
UpdateCoinNum(); // 更新静态文本框中硬币数量的显示
DrawCoin(); // 重新绘制硬币
}
void CMyDialogDlg::OnBnClickedButtonMinus()
{
if (m_nCoinNum > 0) {
m_nCoinNum--; // 减少硬币数量
UpdateCoinNum(); // 更新静态文本框中硬币数量的显示
DrawCoin(); // 重新绘制硬币
}
}
void CMyDialogDlg::DrawCoin()
{
// 获取静态文本框的DC
CDC* pDC = m_static.GetDC();
// 清除原来的内容
pDC->FillSolidRect(0, 0, 100, 100, RGB(0, 0, 0));
// 设置画笔和画刷
CPen pen(PS_SOLID, 1, RGB(255, 255, 255));
CBrush brush(RGB(255, 255, 0));
// 选择画笔和画刷
CPen* pOldPen = pDC->SelectObject(&pen);
CBrush* pOldBrush = pDC->SelectObject(&brush);
// 画硬币
for (int i = 0; i < m_nCoinNum; i++) {
pDC->Ellipse(20 * i, 0, 20 * i + 20, 20);
}
// 恢复画笔和画刷
pDC->SelectObject(pOldPen);
pDC->SelectObject(pOldBrush);
// 释放静态文本框的DC
m_static.ReleaseDC(pDC);
}
```
在上面的代码中,我们实现了增加和减少硬币数量的功能,并重新绘制硬币。在绘制硬币时,我们使用了循环来画出每个硬币,硬币之间的间距为20像素。