MFC绘图中,src\mfc\wingdi.cpp报错

积分陷阱 2011-11-24 09:35:37
在做贪食蛇,但是在执行完一次要调用Invalidate()的时候就跳进报错!
3个绘图的代码如下:

//背景
CRect rect;
int boardLeft=0;
int boardTop=0;
int gridSize=50;
int xMax=10;
int yMax=12;

rect.left=boardLeft-1;
rect.top=boardTop-1;
rect.right=boardLeft+xMax*gridSize+1;
rect.bottom=boardTop+yMax*gridSize+1;
pDC->Rectangle(&rect);
pDC->FillRect(&rect,new CBrush(RGB(0,0,0)));

画蛇:
if(board[i][j]==1)
{
br.CreateSolidBrush(RGB(255,255,255));
oldbr=pDC->SelectObject(&br);
rect1.left=left+i*size;
rect1.top=top+j*size;
rect1.right=left+i*size+size;
rect1.bottom=top+j*size+size;
pDC->Ellipse(&rect1);
}


画果子:

if(board[i][j]==2)
{
colorbr.CreateSolidBrush(seedRGB);
pDC->SelectObject(&colorbr);
rect2.left=left+i*size;
rect2.top=top+j*size;
rect2.right=left+i*size+size;
rect2.bottom=top+j*size+size;
pDC->Ellipse(&rect2);
}

请问问题出在哪里,求教
...全文
435 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
积分陷阱 2011-11-24
  • 打赏
  • 举报
回复
问题解决了,原来是没有释放dc
zyrr159487 2011-11-24
  • 打赏
  • 举报
回复
在DEBUG模式下看下跳出的地方时在哪里,
添加中断或者使用堆栈查看是在哪里跳出的
积分陷阱 2011-11-24
  • 打赏
  • 举报
回复
对了,还有在画蛇和背景之前,声明的变量:
CRect rect1,rect2;
CBrush br,colorbr;
CBrush* oldbr=new CBrush;

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧