MFC对话框展示本地JPG图片

MFC对话框显示本地JPG图片
本帖最后由 VisualEleven 于 2013-08-20 15:09:29 编辑
在对话框中加入一个Picture control控件,运行程序时,控件上显示一个本地的jpg图片。
自己琢磨了好久,网上也看了,就是没有解决问题!!!


添加的控件ID:IDC_ShowPhoto

下面是我的部分代码:
      
  CDC *dc;
dc = GetDC(); //得到对话框的设备环境
CDC dcMemory;
dcMemory.CreateCompatibleDC(dc); //得到与对话框设备环境相兼容的内存DC
CBitmap *bitmap;
bitmap = new CBitmap();
HBITMAP hbitmap;
hbitmap = (HBITMAP)::LoadImage(NULL,L"E:\\psb.jpg",
IMAGE_BITMAP,0,0,LR_LOADFROMFILE);   
if(hbitmap)
{
bitmap->Attach(hbitmap);
}
else
{
AfxMessageBox(L"Error!!!");
ReleaseDC(dc);
ReleaseDC(&dcMemory);
delete bitmap;
return;
}
//取得图像的大小
long bmWidth,bmHeight; //图像的宽度和高度
BITMAP bm;
bitmap->GetBitmap(&bm);
bmWidth = bm.bmWidth;
bmHeight = bm.bmHeight;
dcMemory.SelectObject(bitmap);
//把内存的图像复制到对话框的DC中去
dc->BitBlt(0,0,bmWidth,bmHeight,&dcMemory,0,0,SRCCOPY);


运行结果是:error!!!,肯定是LoadImage没有加载上。呕吐中、、、

大家帮忙看看!!!

------解决方案--------------------
CImage类加载jpg
------解决方案--------------------
你要加载jgp,但是用的 HBITMAP hbitmap;。。。。。。。。。
------解决方案--------------------

引用:
我试了,用Image

CImage image_check; 
if(image_check.Load(L"E:\\psb.jpg"))
{
MessageBox(L"图片已损坏",0,0);
return;
}
CRect rect;
CStatic m_CheckPic;
m_CheckPic.GetClientRect(&rect);  
CDC* pDC= m_CheckPic.GetWindowDC();
pDC->SetStretchBltMode(STRETCH_HALFTONE);  
image_check.Draw(pDC->m_hDC,rect);

ReleaseDC( pDC );
pDC=NULL;
image_check.Destroy();

你这样做 应该把加载和画图分开
画图应该放在onpaint中执行