读书人

0xC0000005: 读取位置 0x00000000 时发

发布时间: 2012-06-17 21:02:01 作者: rapoo

0xC0000005: 读取位置 0x00000000 时发生访问冲突
我想用双缓冲的方法来根据鼠标的移动画出一个正方形,但是在应用时出现了如题的问题,求各位帮帮忙
代码如下:
void CEscapeView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CPaintDC dc(this);
Graphics graph(dc);
if(canvas==NULL) //已经定义了一个Bitmap canvas
{
CRect rect;
this->GetClientRect(&rect);
canvas=new Bitmap(rect.Width(),rect.Height());
}
if(B.move)
{
Graphics *g_canvas=Graphics::FromImage(canvas);
SolidBrush red(Color(255,255,0,0));
g_canvas->FillRectangle(&red,point.x-20,point.y-20,40,40);
graph.DrawImage(canvas,0,0);
delete g_canvas;

B.x=point.x;
B.y=point.y;
Invalidate();
}

CView::OnMouseMove(nFlags, point);
}

[解决办法]
Graphics *g_canvas=Graphics::FromImage(canvas);
canvas是否有效 执行完毕后g_canvas是否有效?
[解决办法]
空指针异常了,Debug下调试一下看看那个函数返回的指针为NULL了。

读书人网 >VC/MFC

热点推荐