我是想用一个位图做对话框的背景,我在对话框的OnInitDialog()函数里加上如下代码:HBITMAP hBitmap = 
(HBITMAP)LoadImage(AfxGetInstanceHandle(),   strAppPath+"Bitmap\\Background.bmp", IMAGE_BITMAP,0,0, LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTSIZE);
……
我用F5调试,程序有个时候到这里就死了,也不是每次都死,而是个3、4次就死。找不到原因,还请各位帮忙。
每次死机的时候,下面的Debug信息栏里的信息停留在:
Loaded 'C:\WINNT\system32\msacm32.drv', no matching symbolic information found.
就没有信息了,然后就是死机。不是程序死了,是系统死了,要reset才行!!
谢谢!!

解决方案 »

  1.   

    hBitmap
    你把这个定义成静态的,或者定义为对话框的成员。
      

  2.   

    HBITMAP hBitmap
    将它定义为成员变量,否则超出了函数体,它的生命期就结束了!!!
      

  3.   

    应该不是生命周期的问题,因为我LoadImage后,用:
    pBmp = new CBitmap();
    CBitmap* m_pBmp->Attach(hBitmap);
    而CBitmap* m_pBmp是成员变量,所以我觉得不应该是这个问题。
      

  4.   

    是你的系统有问题吧? 还是位图太大,资源不够? 我一直用下面的函数加载位图,从来没有问题
    void CSMClientView::SetBitmap(CString szPathName)
    {
    HBITMAP hBitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),
    szPathName, IMAGE_BITMAP, 0, 0,
    LR_CREATEDIBSECTION | LR_LOADFROMFILE | LR_DEFAULTSIZE); if(hBitmap == NULL) return;

    if(m_pbmp)
    {
    m_pbmp->DeleteObject();
    m_pbmp = NULL;
    }
    m_pbmp = new CBitmap();
    m_pbmp->Attach(hBitmap);}
      

  5.   

    应该不是生命周期的问题,因为我LoadImage后,用:
    pBmp = new CBitmap();
    CBitmap* m_pBmp->Attach(hBitmap);
    而CBitmap* m_pBmp是成员变量,所以我觉得不应该是这个问题。你这里并没有新建一个Bitmap,而只不过是Attach的,如果源都没有了,你还怎样去attach?
    请仔细看一下attach的说明,而且请试一个,定义成静态或定义为窗体的成员变量。