关于picture 控件显示图片的问题,请教!
void CCapture::OnPhoto() CCameraDlg * pCDlg = new CCameraDlg();// 在这个对话框中已经取得了pCDlg->m_cvvImage,类型为:CvvImage
pCDlg->DoModal();
int nID = IDC_PHOTO;
// TODO: Add your message handler code here and/or call default
CDC* pDC = GetDlgItem(nID) ->GetDC(); // 获得显示控件的 DC
HDC hDC = pDC ->GetSafeHdc(); // 获取 HDC(设备句柄) 来进行绘图操作
CRect rect;
GetDlgItem(nID) ->GetClientRect( &rect );
CvvImage cimg;
cimg.CopyOf(pCDlg->m_cvvImage);
cimg.DrawToHDC(hDC,&rect);
ReleaseDC(pDC);
}
现在的问题是在主对话框的picture中显示照片,但照片一闪就消失了,请问是什么原因呢?
程序是基于MFC 开发的SDI程序,在view类里实现了OnEraseBkgnd(),是这里的问题吗?
BOOL CFingerView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
//直接使用资源id,图形可伸缩,修改为背景图片可随窗口客户区大小伸缩,图片偏大,失真
CBitmap bmp;
HDC hMemDC=CreateCompatibleDC(pDC->m_hDC);
bmp.LoadBitmap(IDB_BITMAP3);
BITMAP bm;
bmp.GetBitmap(&bm);
SelectObject(hMemDC,HBITMAP(bmp));
CRect rc;
GetClientRect(rc);
StretchBlt(pDC->m_hDC,0,0,rc.Width(),rc.Height(),hMemDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
bmp.DeleteObject();
//return CView::OnEraseBkgnd(pDC);
return TRUE;
}