我程序的BUG终于定位到了,具体定位到的出错的地方代码如下请各位帮忙看看。 
CImage image; 
HBITMAP hbmp; 
CBitmap bitmap; 
image.Load(_T("res/audio.ico")); 
AfxMessageBox(_T("image.Detach前")); 
hbmp = image.Detach(); 
AfxMessageBox(_T("image.Detach后")); 
bitmap.Attach(hbmp); 
出错的函数为image.Detach这个函数调用内的一个断言ATLASSUME( m_hBitmap != NULL );的错误,也就是m_hBitmap等于NULL,但是我用VS2008工程运行的时候没有这个错误,但直接运行生成的exe文件就会出现这个错误。

解决方案 »

  1.   

    在AfxMessageBox(_T("image.Detach前")); 前面加上判断:
    if(image.IsNull())
    {
    MessageBox(_T("Load Error"));
    }
    看看是否Load成功。另外请确保路径正确。
      

  2.   

    你直接运行的路径,和工程的路径不是同一个路径。
    你的程序在Debug目录下,你工程所在路径在Debug目录之上,应该是像楼上说的,没有load成功
      

  3.   

    image.Load(_T("res/audio.ico"));   你使用的是相对路径,不能保证运行时一定是正确的,还是换成绝对路径吧
      

  4.   

    说错了,VS2008默认工程路径和Debug是并列的两个目录
      

  5.   

    直接运行生成的exe在debug或release下。和工程运行时候的路径不一样,把ico文件copy过去
      

  6.   

    换绝对路径,相对路径,不然当前路径在程序运行的时候被修改,这段Code还是会出错。