본문 바로가기
C & C++/MFC Media

DLL 에 있는 비트맵(Bitmap) 리소스를 실행 파일로 가져오는 방법 3가지

by izen8 2011. 12. 14.
반응형

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)));

반응형

댓글