void CMyDlg::OnButton1()
{
CRect rect;
GetDlgItem(IDC_PICBOX)->GetClientRect(rect);
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T,FileName),IMAGE_BITMAP,rect.right,rect.bottom,
LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
m_bitmap.Attach(hBitmap); CDC dcImage;
CDC * pDC=GetDlgItem(IDC_PICBOX)->GetDC();
if(!dcImage.CreateCompatibleDC(pDC)) return;
BITMAP bm;
m_bitmap.GetBitmap(&bm); //show the image
dcImage.SelectObject(&m_bitmap);
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);
pDC->DeleteDC();
dcImage.DeleteDC();
}
以上代码在第一次显示图片时正常,再次选择图片显示时总是报错,请问为什么?
{
CRect rect;
GetDlgItem(IDC_PICBOX)->GetClientRect(rect);
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T,FileName),IMAGE_BITMAP,rect.right,rect.bottom,
LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
m_bitmap.Attach(hBitmap); CDC dcImage;
CDC * pDC=GetDlgItem(IDC_PICBOX)->GetDC();
if(!dcImage.CreateCompatibleDC(pDC)) return;
BITMAP bm;
m_bitmap.GetBitmap(&bm); //show the image
dcImage.SelectObject(&m_bitmap);
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);
pDC->DeleteDC();
dcImage.DeleteDC();
}
以上代码在第一次显示图片时正常,再次选择图片显示时总是报错,请问为什么?
delete pDC;
delete pDC;
pDC = NULL;
HBitmap* hOldBitmap=dcImage.SelectObject(&m_bitmap);
...........
pDC->DeleteDC();
::DeleteObject(m_bitmap);
dcImage.SelectObject(hOldBitmap);
dcImage.DeleteDC();
{
CRect rect;
GetDlgItem(IDC_PICBOX)->GetClientRect(rect);
HBITMAP hBitmap=(HBITMAP)LoadImage()
m_bitmap.Attach(hBitmap); //一个CBitmap不能Attach两次。你在CMyDlg的构造函数里把m_bitmap初始化好就行了,不要每次点按钮的时候再来载入位图。
…………
}