在VC中加载自定义资源类型,以PNG文件为例

代码为例,实现了从资源中加载PNG文件,初始化为Gdiplus::Image对象:

    HMODULE hInstance = ::GetModuleHandle(NULL); // 指定NULL,获取当前exe文件的句柄

    HRSRC hRsrc = ::FindResource(hInstance, MAKEINTRESOURCE(IDR_PNG1), _T("PNG"));
    ATLASSERT(hRsrc != NULL);

    DWORD dwSize = ::SizeofResource(hInstance, hRsrc);
    LPBYTE lpRsrc = (LPBYTE)::LoadResource(hInstance, hRsrc);
    ATLASSERT(lpRsrc != NULL);

    HGLOBAL hMem = ::GlobalAlloc(GMEM_FIXED, dwSize);
    LPBYTE pMem = (LPBYTE)::GlobalLock(hMem);
    memcpy(pMem, lpRsrc, dwSize);
    IStream* pStream = NULL;
    ::CreateStreamOnHGlobal( hMem, FALSE, &pStream);

    m_pBkImage = Gdiplus::Image::FromStream(pStream);

    ::GlobalUnlock(hMem);
    pStream->Release();
    ::FreeResource(lpRsrc);

你可能感兴趣的:(image,null,exe)