DLL 에 있는 비트맵 리소스를 실행 파일로 가져오는 방법 3가지
1. FindResource() -> LoadResource() -> LockResource()
를 이용한 방법
① LoadLibrary() 를 이용해서 DLL 파일의 핸들값을 얻어온다.
[code]
HINSTANCE hDll = NULL;
hDll = LoadLibrary("ExportDll.dll");
if(hDll == NULL) {
MessageBox("Can't ExportDll.dll", "ResourceDll", MB_OK);
return;
}[/code]
② FindResource() -> LoadResource() -> LockResource() 와
CBrush의 객체인 CreateDIBPatternBrush를 이용해서 출력.
[code]
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);
}
}
[/code]
=======================================================
2. CBitmap 객체의 멤머함수인 Attach 를 이용하는 방법
① LoadLibrary() 를 이용해서 DLL 파일의 핸들값을 얻어온다.
[code]
HINSTANCE hDll = NULL;
hDll = LoadLibrary("ExportDll.dll");
if(hDll == NULL) {
MessageBox("Can't ExportDll.dll", "ResourceDll", MB_OK);
return;
}
[/code]
② CBitmap 객체의 멤머함수인 Attach 를 이용
CBitmap객체.Attach(::LoadBitmap(hDll,
MAKEINTRESOURCE(IDB_TOP_IMAGE)));
=======================================================
3. CBitmap 객체의 멤머함수인 m_hObject 를 이용하는 방법
① LoadLibrary() 를 이용해서 DLL 파일의 핸들값을 얻어온다.
[code]
HINSTANCE hDll = NULL;
hDll = LoadLibrary("ExportDll.dll");
if(hDll == NULL) {
MessageBox("Can't ExportDll.dll", "ResourceDll", MB_OK);
return;
}
[/code]
② CBitmap 객체의 멤머함수인 m_hObject 를 이용
[code]
CBitmap객체.m_hObject = ::LoadBitmap(hDll,
MAKEINTRESOURCE(IDB_TOP_IMAGE)));
[/code]
1. FindResource() -> LoadResource() -> LockResource()
를 이용한 방법
① LoadLibrary() 를 이용해서 DLL 파일의 핸들값을 얻어온다.
[code]
HINSTANCE hDll = NULL;
hDll = LoadLibrary("ExportDll.dll");
if(hDll == NULL) {
MessageBox("Can't ExportDll.dll", "ResourceDll", MB_OK);
return;
}[/code]
② FindResource() -> LoadResource() -> LockResource() 와
CBrush의 객체인 CreateDIBPatternBrush를 이용해서 출력.
[code]
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);
}
}
[/code]
=======================================================
2. CBitmap 객체의 멤머함수인 Attach 를 이용하는 방법
① LoadLibrary() 를 이용해서 DLL 파일의 핸들값을 얻어온다.
[code]
HINSTANCE hDll = NULL;
hDll = LoadLibrary("ExportDll.dll");
if(hDll == NULL) {
MessageBox("Can't ExportDll.dll", "ResourceDll", MB_OK);
return;
}
[/code]
② CBitmap 객체의 멤머함수인 Attach 를 이용
CBitmap객체.Attach(::LoadBitmap(hDll,
MAKEINTRESOURCE(IDB_TOP_IMAGE)));
=======================================================
3. CBitmap 객체의 멤머함수인 m_hObject 를 이용하는 방법
① LoadLibrary() 를 이용해서 DLL 파일의 핸들값을 얻어온다.
[code]
HINSTANCE hDll = NULL;
hDll = LoadLibrary("ExportDll.dll");
if(hDll == NULL) {
MessageBox("Can't ExportDll.dll", "ResourceDll", MB_OK);
return;
}
[/code]
② CBitmap 객체의 멤머함수인 m_hObject 를 이용
[code]
CBitmap객체.m_hObject = ::LoadBitmap(hDll,
MAKEINTRESOURCE(IDB_TOP_IMAGE)));
[/code]
'Windows > MFC' 카테고리의 다른 글
다국어 버전 만들기 (Multi language) (0) | 2013.10.02 |
---|---|
다국어 버전에서 언어를 변경하려고 할 때 SetThreadLocale (0) | 2013.10.02 |
SDI, MDI 에서 메뉴 없애기 hMenu (0) | 2013.10.02 |
_splitpath, _wsplitpath (0) | 2013.10.02 |
ADO Classes Sample Code (0) | 2013.10.02 |