void CMyView::rise() { for (auto& pt : points) // 遍历points向量中的所有元素 { pt.y -= 5; // 更新每个圆形的位置 br.CreateSolidBrush(color); pDC = GetDC(); pDC->SelectObject(&br); pDC->Ellipse(pt.x - r, pt.y - r, pt.x + r, pt.y + r); br.DeleteObject(); } }出现错误
时间: 2024-01-31 20:04:16 浏览: 103
在Doc / View框架中使用网格控件
这段代码有几个问题,其中一个问题是在循环中不应该多次创建和删除画刷对象。应该在循环外部创建画刷对象,然后在循环中选择画刷对象,最后在循环外部删除画刷对象。修改后的代码如下:
```
void CMyView::rise() {
CBrush br(color);
for (auto& pt : points) // 遍历points向量中的所有元素
{
pt.y -= 5; // 更新每个圆形的位置
pDC = GetDC();
pDC->SelectObject(&br);
pDC->Ellipse(pt.x - r, pt.y - r, pt.x + r, pt.y + r);
}
br.DeleteObject();
}
```
另外,你可以给我更多上下文,例如错误信息,我可以更准确地帮助你解决问题。
阅读全文