C++如何加载PNG透明图片作为菜单项的图标

来源:互联网 发布:除了京东淘宝还有什么 编辑:程序博客网 时间:2024/06/06 04:19


HBITMAP LoadImageFromResource(UINT nResourceId, LPCTSTR pszResourceName/* = "PNG"*/){HBITMAP hBitmap = NULL;HINSTANCE hInstance = AfxGetResourceHandle();HRSRC hRsrc = ::FindResource (hInstance, MAKEINTRESOURCE(nResourceId), pszResourceName); // typeif ( hRsrc==NULL ){return hBitmap;}// load resource into memoryDWORD len = SizeofResource(hInstance, hRsrc);BYTE* lpRsrc = (BYTE*)LoadResource(hInstance, hRsrc);if ( lpRsrc==NULL ){return hBitmap;}// Allocate global memory on which to create streamHGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len);BYTE* pmem = (BYTE*)GlobalLock(m_hMem);memcpy(pmem,lpRsrc,len);IStream* pstm;CreateStreamOnHGlobal(m_hMem,FALSE,&pstm);// load from streamCImage image;image.Load(pstm);hBitmap = image.Detach();// free/release stuffGlobalUnlock(m_hMem);pstm->Release();FreeResource(lpRsrc);return hBitmap;}HBITMAP hBmpPreview = NULL;hBmpPreview = LoadImageFromResource(IDR_PNG_PICTURE);::SetMenuItemBitmaps(psub->m_hMenu, ID_MENU_PREVIEW_IMAGE, MF_BYCOMMAND, hBmpPreview, hBmpPreview);


0 0
原创粉丝点击