19.VC(ui) - 그림 자원을 불러오는 방법(랜덤 코드)
BOOL CImageManager::LoadResImage(UINT nResID,
LPCTSTR lpType,
Bitmap *&lpImage,
HINSTANCE hInstance)
{
lpImage = NULL;
hInstance = (NULL == hInstance) ? ::AfxGetResourceHandle() : hInstance;
// If bmp,use system load.
if (RT_BITMAP == lpType)
{
HBITMAP hBmp = ::LoadBitmap(hInstance, MAKEINTRESOURCE(nResID));
lpImage = Bitmap::FromHBITMAP(hBmp, 0);
::DeleteObject(hBmp);
if (!lpImage)
{
TRACE("lpImage is NULL
");
return FALSE;
}
else
{
if (Gdiplus::Ok != lpImage->GetLastStatus())
{
TRACE("lpImage is error
");
return FALSE;
}
else
{
return TRUE;
}
}
}
// User-Defined
HRSRC hRsrc = ::FindResource(hInstance, MAKEINTRESOURCE(nResID), lpType);
if (!hRsrc)
{
TRACE("hRscs is NULL
");
return FALSE;
}
// Load resource into memory ---------------------------------
DWORD len = ::SizeofResource(hInstance, hRsrc);
BYTE *lpRsrc = (BYTE*)::LoadResource(hInstance, hRsrc);
if (!lpRsrc)
{
TRACE("lpRsrc is NULL
");
return FALSE;
}
// Allocate global memory on which to create stream ----------
HGLOBAL hMem = ::GlobalAlloc(GMEM_FIXED, len);
BYTE *pMem = (BYTE*)::GlobalLock(hMem);
memcpy(pMem, lpRsrc, len);
IStream *pStream = NULL;
// You can query MSDN,why I use TRUE, -- hgy notes.
HRESULT ht = ::CreateStreamOnHGlobal(hMem, TRUE, &pStream);
if (S_OK != ht)
{
TRACE("ht is error
");
return FALSE;
}
// Load from stream -------------------------------------------
lpImage = Gdiplus::Bitmap::FromStream(pStream);
// free/release stuff -----------------------------------------
::GlobalUnlock(hMem);
pStream->Release();
::FreeResource(lpRsrc);
if (!lpImage)
{
TRACE("lpImage is NULL
");
return FALSE;
}
else
{
if (Gdiplus::Ok != lpImage->GetLastStatus())
{
TRACE("lpImage is error
");
return FALSE;
}
else
{
return TRUE;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
socket 통신 코드 연습--매일 조금씩 진보/*服务器*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.