在对话框中如何显示jpg图像

youthtony 2005-12-05 08:13:18
找了一些函数,可我不知道,怎么在对话框里使用
HWND 参数,是指的那一块!我需要在对话框里生成什么控件,才能使用啊
以下是函数原形
HRESULT ShowPic(char *lpstrFile,HWND hWnd,int nScrWidth,int nScrHeight);
{
// lpstrFile:文件名(最好是包含路径在内)
// hWnd
// nScrWidth:输出图片的宽度
// nScrHeight:输出图片的高度
// nScrWidth、nScrHeight是输出图片的实际大小,换而言之是指缩放后的尺寸

请帮助
...全文
219 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dingpiao 2005-12-06
  • 打赏
  • 举报
回复
在OnPaint()加入
imgName = ".\\res\\t.jpg";
showPic();


//显示gif图像
bool CPage_Setting::showPic()
{
CRect rect;
CDC* pDC;
IPicture *pPic;
IStream *pStm;

CFileStatus fstatus;
CFile file;
LONG cb;

if (file.Open(imgName,CFile::modeRead)&&file.GetStatus(imgName,fstatus)&&
((cb = fstatus.m_size) != -1))
{
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if (hGlobal != NULL)
{
if ((pvData = GlobalLock(hGlobal)) != NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);

if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;

pPic->get_Width(&hmWidth);
pPic->get_Height(&hmHeight);

// double fX,fY;
// fX = (double)pDC->GetDeviceCaps(HORZRES)*(double)hmWidth/((double)pDC->GetDeviceCaps(HORZSIZE)*100.0);
// fY = (double)pDC->GetDeviceCaps(VERTRES)*(double)hmHeight/((double)pDC->GetDeviceCaps(VERTSIZE)*100.0);
// if(FAILED(pPic->Render(*pDC,0,0,(DWORD)fX,(DWORD)fY,0,hmHeight,hmWidth,-hmHeight,NULL)))
double fX,fY;
fX = 640;
fY = 480;
pDC = GetDlgItem(IDC_STATIC_PIC)->GetDC();
//得到显示位置
GetDlgItem(IDC_STATIC_PIC)->GetWindowRect(rect);
if(FAILED(pPic->Render(*pDC,0,0,(DWORD)(rect.right - rect.left),(DWORD)(rect.bottom - rect.top),0,hmHeight,hmWidth,-hmHeight,NULL)))
{
// AfxMessageBox("Failed To Render The picture!");
pPic->Release();
file.Close();
ReleaseDC(pDC);
return false;
}
else
{
pPic->Release();
file.Close();
ReleaseDC(pDC);
return true;
}
}

}
else
{
// AfxMessageBox("Error Loading Picture From Stream!");
file.Close();
return false;
}
}

}
else
{// AfxMessageBox("Can't Open Image File!");
return false;
}
}
Featured 2005-12-06
  • 打赏
  • 举报
回复
GDI+才素王道,faq中有:
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=211444
mzy2003 2005-12-06
  • 打赏
  • 举报
回复
用IPicture的Render显示,用CClientDC(this)得到对话框的DC。
dingpiao 2005-12-06
  • 打赏
  • 举报
回复
//得到显示位置
GetDlgItem(IDC_STATIC_PIC)->GetWindowRect(rect);
这句要改一下
xindao_wang 2005-12-05
  • 打赏
  • 举报
回复
HWND是在windows API编程中使用,一般指当前对话框的句柄,因为在原来的API编程中,需要自己来创建手工来创建对话框,在MFC中已经被隐藏了,你在编程的时候如果是在对话框内用this代替它就可以。
arvid_gs 2005-12-05
  • 打赏
  • 举报
回复
我两年前写的一片文章!可以参考一下!
http://dev.csdn.net/develop/article/23/23390.shtm

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧