读书人

!运行程序出错

发布时间: 2012-06-21 13:42:41 作者: rapoo

求助!运行程序出错。
我编写了一个简单读取BMP图片的程序,编译时没有错误,但一打开文件,就是会出现Debug Assertion Failed!如果选择“重试”,程序就会说遇到一个错误退出。“has exited with code -2147483645 (0x80000003)”。。。。。这是部分代码:
void CTestView::OnFileOpen()
{
// TODO: Add your command handler code here
CFileDialog Dlg(TRUE,"BMP");
if(IDOK==Dlg.DoModal())
{
m_FileName.Format("%s",Dlg.GetPathName());
Dib.LoadFile(m_FileName);
m_IsLoad=TRUE;
Invalidate();
}
}

void CTestView::OnDraw(CDC* pDC)
{
CTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if(m_IsLoad==TRUE)
{
CBitmap Bitmap;
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,m_FileName,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
Bitmap.Attach(hBitmap);
CDC dcImage;
if(!dcImage.CreateCompatibleDC(pDC))
{
return;
}
BITMAP bm;
Bitmap.GetBitmap(&bm);
dcImage.SelectObject(&Bitmap);
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);
}
}

[解决办法]
应该是句柄无效引起断言了,楼主好好看看调用栈,这种问题很容易解决
[解决办法]
断点后单步调试一下,看看call stack执行情况。
[解决办法]
Bitmap.Attach(hBitmap);

前面加上
Bitmap.Detach();

[解决办法]
一般出现这种问题,先加断点,看在哪里出问题,再找解决的方法~~~

读书人网 >C++

热点推荐