JPG resouce 등록하고 사용하기
JPG resource를 등록하고 사용해 보자.!!
1. GDI+를 초기화한다.
xxxx.cpp 파일 처음부분에 하기와 같이 설정한다.
//////////////////////////////////////////////////////////////////////////
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus")
HINSTANCE g_hInst;
class CGdiPlusStarter
{
private:
ULONG_PTR m_gpToken;
public:
bool m_bSuccess;
CGdiPlusStarter() {
GdiplusStartupInput gpsi;
m_bSuccess=(GdiplusStartup(&m_gpToken,&gpsi,NULL) == Ok);
}
~CGdiPlusStarter() {
GdiplusShutdown(m_gpToken);
}
};
CGdiPlusStarter g_gps;
////////////////////////////////////////////////////////////////////////
2. 제대로 초기와 되었는지 확인한다.
GDI를 사용하는 xxxxx::OnInitDialog() 함수에 하기내용을 추가한다.
////////////////////////////////////////////////////////////////////////
if (g_gps.m_bSuccess == FALSE) {
AfxMessageBox(TEXT("GDI+ 라이브러리를 초기화할 수 없습니다."));
return 0;
}
////////////////////////////////////////////////////////////////////////
3. JPG File을 import 한다.
resource File에 원하는 JPG 파일을 호출하여 등록해둔다.
예를들어, "JPG" IDR_JPG1 이렇게 등록되었다고 가정하자.
4. JPG resource를 열어, Dialog Box에 출력한다.
////////////////////////////////////////////////////////////////////////
CPaintDC dc(this); // 그리기를 위한 디바이스 컨텍스트
Graphics G(dc);
or Graphics(m_hWnd); 도 가능.
HRSRC hResource = FindResource(g_hInst, MAKEINTRESOURCE(IDR_JPG1),
TEXT("JPG"));
if (!hResource) return;
DWORD imageSize = SizeofResource(g_hInst, hResource);
HGLOBAL hGlobal = LoadResource(g_hInst, hResource);
LPVOID pData = LockResource(hGlobal);
HGLOBAL hBuffer = GlobalAlloc(GMEM_MOVEABLE,imageSize);
LPVOID pBuffer = GlobalLock(hBuffer);
CopyMemory(pBuffer,pData,imageSize);
GlobalUnlock(hBuffer);
IStream *pStream;
HRESULT hr=CreateStreamOnHGlobal(hBuffer,TRUE,&pStream);
Image src_img(pStream);
pStream->Release();
if (src_img.GetLastStatus() != Ok) return;
G.DrawImage(&src_img, 0, 0);
////////////////////////////////////////////////////////////////////////
이렇게 하면 JPG 파일을 열고, Dialog Box에 원하는 resource를 출력해준다.
끝...
참고로, Position 관련하여,
GetWindowRect, GetClientRect, ScreenToClient, ClientToScreen 함수등을 사용하여,
position의 변경을 꾀할수있다.. ^^*