怎么在一个静态Picture控件中显示JPG文件?

BWaveVC 2004-12-16 11:01:50
问题描述:
在一个对话框中把一幅JPG图片显示到一个静态控件中,我尝试使用网上的CPicture类,可是没有成功,希望高手帮助解答.

email: bwavevc@yahoo.com.cn
多谢
...全文
203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
aoosang 2004-12-22
  • 打赏
  • 举报
回复
kingzai都给你解答了,下面排队接分了
hony688 2004-12-22
  • 打赏
  • 举报
回复
收藏!!
flyelf 2004-12-16
  • 打赏
  • 举报
回复
用Gdi+吧
kingzai 2004-12-16
  • 打赏
  • 举报
回复
my example:
HBITMAP CPicture::LoadImageFromID(UINT nIDRes)
{
try
{
HMODULE hInst=GetModuleHandle(NULL);
LPCTSTR lpRes = MAKEINTRESOURCE(nIDRes);
HRSRC hRsrc = ::FindResource(hInst, lpRes, "JPG");
if (NULL == hRsrc)
return FALSE;

HGLOBAL hGlobal = LoadResource(hInst, hRsrc);
if (NULL == hGlobal)
return FALSE;

DWORD dwSize = SizeofResource(hInst, hRsrc);
LPVOID lpData = LockResource(hGlobal);
if (NULL == lpData)
return FALSE;

// alloc memory based on file size
HGLOBAL hJPG = ::GlobalAlloc(GMEM_MOVEABLE, dwSize);
LPVOID lpJGP = ::GlobalLock(hJPG);
memcpy(lpJGP, lpData, dwSize);
::GlobalUnlock(hJPG);

//LPVOID pvData = GlobalLock(hGlobal);
//_ASSERTE(NULL != pvData);

// read file and store in global memory

LPSTREAM pstm = NULL;
// create IStream* from global memory
HRESULT hr = CreateStreamOnHGlobal(hJPG, TRUE, &pstm);
_ASSERTE(SUCCEEDED(hr) && pstm);

// Create IPicture from image file
LPPICTURE gpPicture;

hr = ::OleLoadPicture(pstm, dwSize, FALSE, IID_IPicture, (LPVOID *)&gpPicture);
_ASSERTE(SUCCEEDED(hr) && gpPicture);
pstm->Release();

OLE_HANDLE m_picHandle;

gpPicture->get_Handle(&m_picHandle);
return (HBITMAP)m_picHandle;
}
catch (...)
{

}
return NULL;
}
//call
CPicture pic;
HBITMAP hbmp=pic.LoadImageFromID(IDR_TODAY);//IDR_TODAY is jpg id
(HBITMAP)::SendMessage(::GetDlgItem(this->m_hWnd,IDC_TODAY), STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hbmp);

BWaveVC 2004-12-16
  • 打赏
  • 举报
回复
能不能够使用Dialog的函数来实现?

19,468

社区成员

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

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