Gdiplus::Bitmap * CPaiPaiHelper::GetBitmapFromRescourse(UINT id, LPCTSTR pType, HMODULE hInst)
{
  
     Gdiplus::Bitmap *pBitmap;
     LPCTSTR pName = MAKEINTRESOURCE(id);
     HRSRC hResource = ::FindResource(hInst, pName, pType);//从指定模块寻找指定资源
     if (NULL == hResource)
     {
           return FALSE;//找不到资源,返回FALSE
     }
     DWORD p_w_picpathSize = ::SizeofResource(hInst, hResource);//资源所占的字节大小
     if (0 == p_w_picpathSize)
     {
           return FALSE;//资源大小为0,返回FALSE
     }
     //加载资源,锁定资源,得到资源在内存中的首地址
     const void* pResourceData = ::LockResource(::LoadResource(hInst, hResource));
     if (NULL == pResourceData)
     {
           return FALSE;//地址为空,返回FALSE
     }
     HGLOBAL hBuffer  = ::GlobalAlloc(GMEM_MOVEABLE, p_w_picpathSize);//分配一块大小一样的全局缓存
     if (NULL != hBuffer)//分配全局缓存成功
     {
           void* pBuffer = ::GlobalLock(hBuffer);//锁定刚才分配的全局缓存
           if (NULL != pBuffer)
           {
                 CopyMemory(pBuffer, pResourceData, p_w_picpathSize);//把资源的内容copy到全局缓存中

 
                 IStream* pStream = NULL;
                 if (S_OK == ::CreateStreamOnHGlobal(hBuffer, FALSE, &pStream) && NULL != pStream)//创建流Stream
                 {
                      pBitmap =new Gdiplus::Bitmap(pStream);//从流Stream创建位图
                       pStream->Release();//释放流Stream
                       if (NULL == pBitmap)
                       { 
                             delete pBitmap;
                       }
                 }
                 ::GlobalUnlock(hBuffer);//解锁全局缓存
           }
           ::GlobalFree(hBuffer);
           hBuffer = NULL;

 
     }

 
     return pBitmap;
}