我是想用一个位图做对话框的背景,我在对话框的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才行!!
谢谢!!
(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才行!!
谢谢!!
你把这个定义成静态的,或者定义为对话框的成员。
将它定义为成员变量,否则超出了函数体,它的生命期就结束了!!!
pBmp = new CBitmap();
CBitmap* m_pBmp->Attach(hBitmap);
而CBitmap* m_pBmp是成员变量,所以我觉得不应该是这个问题。
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);}
pBmp = new CBitmap();
CBitmap* m_pBmp->Attach(hBitmap);
而CBitmap* m_pBmp是成员变量,所以我觉得不应该是这个问题。你这里并没有新建一个Bitmap,而只不过是Attach的,如果源都没有了,你还怎样去attach?
请仔细看一下attach的说明,而且请试一个,定义成静态或定义为窗体的成员变量。