VC++中用下面两个函数为什么不能显示图片?知道的帮帮忙!谢谢!
我用下面两个函数只能找到图片路径,就是没法显示图片,不知道错哪儿了?
void Ccontent::ShowPic(CString pathfile,int idc)
{
CBitmap hbmp;
HBITMAP hbitmap;
//将pStatic指向要显示的地方
CStatic *pStaic;
pStaic=(CStatic*)GetDlgItem(idc);
//装载资源
hbitmap=(HBITMAP)::LoadImage (::AfxGetInstanceHandle(),pathfile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
hbmp.Attach(hbitmap);
//获取图片格式
BITMAP bm;
hbmp.GetBitmap(&bm);
//创建临时的内存DC对象
CDC dcMem;
dcMem.CreateCompatibleDC(GetDC());
CBitmap *poldBitmap=(CBitmap*)dcMem.SelectObject(hbmp);
CRect lRect;
pStaic->GetClientRect(&lRect);
lRect.NormalizeRect();
//显示位图
pStaic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(),
&dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
dcMem.SelectObject(&poldBitmap);
pStaic->ReleaseDC(&dcMem);
}
void Ccontent::OnOpenImage()
{
// TODO: Add your control notification handler code here
CFileDialog mFileDlg(TRUE);
if (mFileDlg.DoModal () != IDOK) return;
CString str(" ",10000);
mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);
str.ReleaseBuffer();
CWnd* pWnd = GetDlgItem(IDC_PIC);
CDC* pDC = pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();
CPen* pPenRed = new CPen;
pPenRed->CreatePen(PS_SOLID, 1, RGB(255,0,0));
CPen* pOldPen = pDC->SelectObject(pPenRed);
POSITION mPos=mFileDlg.GetStartPosition();
CString pathName(" ",128);
while(mPos!=NULL)
{
pathName=mFileDlg.GetNextPathName(mPos);
ShowPic(pathName,IDC_PIC);
}
}