DLL 에 있는 비트맵 리소스를 실행 파일로 가져오는 방법 3가지
1. FindResource() -> LoadResource() -> LockResource()
를 이용한 방법
① LoadLibrary() 를 이용해서 DLL 파일의 핸들값을 얻어온다.
HINSTANCE hDll = NULL;
hDll = LoadLibrary("ExportDll.dll");
if(hDll == NULL) {
MessageBox("Can't ExportDll.dll", "ResourceDll", MB_OK);
return;
}
② FindResource() -> LoadResource() -> LockResource() 와
CBrush의 객체인 CreateDIBPatternBrush를 이용해서 출력.
HRSRC hRes; // 비트맵 리소스 핸들
// 비트맵 리소스 핸들에 대한 글로벌 영역
HGLOBAL hData, hLockedData;
CBrush brush;
// 리소스 핸들을 얻어온다.
hRes = ::FindResource(hDll,
MAKEINTRESOURCE(IDB_TOP_IMAGE), RT_BITMAP);
// 리소스 핸들 얻어오기에 성공했다면,
if(hRes != NULL) {
// LoadResource 와 LockResource 실행
if(((hData = ::LoadResource(hDll, hRes)) != NULL) &&
((hLockedData = (HGLOBAL)::LockResource(hData))
!= NULL)) {
brush.CreateDIBPatternBrush(hLockedData,
DIB_RGB_COLORS);
CBrush* pOldBrush = pDC->SelectObject(&brush);
pDC->Rectangle(0, 0, 177, 47);
pDC->SelectObject(pOldBrush);
::FreeResource(hLockedData);
}
}
=======================================================
2. CBitmap 객체의 멤머함수인 Attach 를 이용하는 방법
① LoadLibrary() 를 이용해서 DLL 파일의 핸들값을 얻어온다.
HINSTANCE hDll = NULL;
hDll = LoadLibrary("ExportDll.dll");
if(hDll == NULL) {
MessageBox("Can't ExportDll.dll", "ResourceDll", MB_OK);
return;
}
② CBitmap 객체의 멤머함수인 Attach 를 이용
CBitmap객체.Attach(::LoadBitmap(hDll,
MAKEINTRESOURCE(IDB_TOP_IMAGE)));
=======================================================
3. CBitmap 객체의 멤머함수인 m_hObject 를 이용하는 방법
① LoadLibrary() 를 이용해서 DLL 파일의 핸들값을 얻어온다.
HINSTANCE hDll = NULL;
hDll = LoadLibrary("ExportDll.dll");
if(hDll == NULL) {
MessageBox("Can't ExportDll.dll", "ResourceDll", MB_OK);
return;
}
② CBitmap 객체의 멤머함수인 m_hObject 를 이용
CBitmap객체.m_hObject = ::LoadBitmap(hDll,
MAKEINTRESOURCE(IDB_TOP_IMAGE)));
'C & C++ > MFC Media' 카테고리의 다른 글
picture control 투명화 처리 (0) | 2012.08.30 |
---|---|
BMP, GIF, JPG 수정하기 (0) | 2012.06.20 |
Dialog 를 캡쳐하여 인쇄하기 (0) | 2011.10.25 |
CListCtrl 에 이미지(tga, png, jpg, tif, bmp) 컨트롤 하기 (0) | 2011.04.28 |
배경 이미지 연속적으로 돌리기 (0) | 2011.04.28 |
댓글