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)));
'Program Language > VisualC(MFC)' 카테고리의 다른 글
[VS Error] LINK : fatal error LINK1104: cannot open file "LIBC.lib" (0) | 2012.04.05 |
---|---|
AfxMessageBox("....") 메세지 띄우는 함수의타이틀(Title)을 변경하고자 할 경우.. (0) | 2007.04.30 |
MFC에서 Command Line의 값 받기.. (0) | 2006.12.04 |
윈도우 위에 새로운 윈도우 생성... (0) | 2006.11.22 |
멀티뷰 구현.. (0) | 2006.11.09 |
윈도우 연산자 오류와 VxD 에러에 대한 코드정리 (0) | 2006.10.11 |