
{
USES_CONVERSION
static bool s_bInitied = false
if( !s_bInitied ) {
s_bInitied = true
Gdiplus::GdiplusStartupInput gsi
Gdiplus::GdiplusStartupOutput gso
ULONG uToken = 0
Gdiplus::GdiplusStartup(&uToken, &gsi, &gso)
}
Gdiplus::Bitmap* pBitmap = NULL
if( HIWORD(bitmap.m_lpstr) != NULL ) {
// Load from filename
pBitmap = new Gdiplus::Bitmap(T2CW(bitmap.m_lpstr))
}
else if( type.m_lpstr != NULL &&type.m_lpstr != RT_BITMAP ) {
// Loading PNG, JPG resources etc
WTL::CResource res
if( !res.Load(type, bitmap) ) return NULL
DWORD dwSize = res.GetSize()
HANDLE hMemory = ::GlobalAlloc(GMEM_MOVEABLE, dwSize)
if( hMemory == NULL ) return NULL
::memcpy(::GlobalLock(hMemory), res.Lock(), dwSize)
::GlobalUnlock(hMemory)
IStream* pStream = NULL
if( FAILED( ::CreateStreamOnHGlobal(hMemory, TRUE, &pStream) ) ) {
::GlobalFree(hMemory)
return FALSE
}
pBitmap = new Gdiplus::Bitmap(pStream)
pStream->Release()
}
else {
// This only loads BMP resources
pBitmap = new Gdiplus::Bitmap(_Module.GetResourceInstance(), (LPCWSTR) (UINT) bitmap.m_lpstr)
}
if( pBitmap == NULL ) return NULL
HBITMAP hBitmap = NULL
pBitmap->GetHBITMAP(NULL, &hBitmap)
delete pBitmap
return hBitmap
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)