一、显示bmp及ico
//h文件
CStatic m_static;
//cpp文件
CBitmap bitmap;
bitmap.LoadBitmapW(IDB_BITMAP); //加载位图
BITMAP bmp;
bitmap.GetBitmap(&bmp); //获取位图参数
CRect rect(10,10,10+bmp.bmWidth,10+bmp.bmHeight); //显示区域
m_static.Create(L"",WS_CHILD | SS_BITMAP | SS_CENTERIMAGE,rect,this,12345); //创建static
//关联控件和位图,其中 IDB_BITMAP 是加载的位图资源ID号
m_static.SetBitmap(::LoadBitmap(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDB_BITMAP)));
m_static.ShowWindow(true);
显示ICO和BMP是一个道理,函数改成LoadIcon 、SetIcon等就行了
二、路径动态加载方式显示PNG
//h文件
#include "atlimage.h"
CStatic m_static;
//cpp文件
CImage image;
image.Load(_T("res/node.png")); //以相对路径加载PNG图片
HBITMAP hBmp = image.Detach();
CRect rect(50,50,50+image.GetWidth(),50+image.GetHeight());
m_static.Create(L"", SS_BITMAP | SS_CENTERIMAGE,rect,this,12346);
m_static.SetBitmap(hBmp);
m_static.ShowWindow(true);
三、静态加载资源方式显示PNG
//h文件
#include "atlimage.h"
CStatic m_static;
//cpp文件
CImage image;
LoadImageFromIDResource(&image,IDB_PNG,_T("PNG")); //自定义函数加载资源
HBITMAP hBmp = image.Detach();
CRect rect(50,50,50+image.GetWidth(),50+image.GetHeight());
m_static.Create(L"", SS_BITMAP | SS_CENTERIMAGE,rect,this,12346);
m_static.SetBitmap(hBmp);
m_static.ShowWindow(true);
其中LoadImageFromIDResource实现函数如下:
BOOL LoadImageFromIDResource(CImage *pImage, UINT nResID,LPCTSTR lpTyp)
{
if ( pImage == NULL)
return false;
pImage->Destroy();
// 查找资源
HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp);
if (hRsrc == NULL)
return false;
// 加载资源
HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc);
if (hImgData == NULL)
{
::FreeResource(hImgData);
return false;
}
// 锁定内存中的指定资源
LPVOID lpVoid = ::LockResource(hImgData);
LPSTREAM pStream = NULL;
DWORD dwSize = ::SizeofResource(AfxGetResourceHandle(), hRsrc);
HGLOBAL hNew = ::GlobalAlloc(GHND, dwSize);
LPBYTE lpByte = (LPBYTE)::GlobalLock(hNew);
::memcpy(lpByte, lpVoid, dwSize);
// 解除内存中的指定资源
::GlobalUnlock(hNew);
// 从指定内存创建流对象
HRESULT ht = ::CreateStreamOnHGlobal(hNew, TRUE, &pStream);
if ( ht != S_OK )
{
GlobalFree(hNew);
}
else
{
// 加载图片
pImage->Load(pStream);
GlobalFree(hNew);
}
// 释放资源
::FreeResource(hImgData);
return true;
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章