• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

DLL 리소스 전환 방법

기술자료/CPP 2004. 8. 4. 19:38

아래의 글은 제가 작성한 것이 아닙니다. 데브피아의 Q/A에서 발췌한 것으로써,
아직 제 머릿속이 정리가 안되 임시적으로 올린 것입니다.
이 내용이 정리되면 제가 다시 쓰겠습니다.


DLL에서 리소스를 사용할 때 흔히 발생하면서도 아주 고약한 문제중 하나입니다.
다음과 같은 전용 클래스를 만들어서 사용하시면 사용하기도 편하고 문제도 간단히 해결됩니다.



    
//=======================================================================
// XTDLLState.h 파일
//=======================================================================
#ifndef __EXTDLLSTATE_H__
#define __EXTDLLSTATE_H__
class CEXTDLLState  
{
public:
CEXTDLLState();
    virtual ~CEXTDLLState();
protected:
    HINSTANCE m_hInstOld;
};

//extern static AFX_EXTENSION_MODULE TextEffectDllDLL; #endif // !defined(AFX_EXTDLLSTATE_H__300ABF7E_3541_4AE3_8080_978EA6E1399D__INCLUDED_)

//======================================================================= // XTDLLState.cpp 파일 //======================================================================= #include "stdafx.h" #include "EXTDLLState.h" CEXTDLLState::CEXTDLLState() {    CString strDll;    // FCubic Common DLL 연결 #ifdef _DEBUG    strDll = _T("MyDll_d.dll");        // 디버그용으로 생성한 Dll 이름 #else    strDll = _T("MyDll.dll");            // 릴리즈용으로 생성한 Dll 이름 #endif

  m_hInstOld = AfxGetResourceHandle();   AfxSetResourceHandle( ::GetModuleHandle(strDll) ); }

CEXTDLLState::~CEXTDLLState() {   AfxSetResourceHandle(m_hInstOld); }


위와 같이 간단한 클래스를 만드세요.
단 "MyDll_d.dll" 과 "MyDll.dll" 부분을 자신의 Dll 이름으로 바꾸세요.
보니까 님께서는 대화상자 리소스를 쓰려고 하시는 것 같은데요..
이런 경우엔 대화상자 클래스에서 DoModal()을 오버라이딩해서 함수를 만들고 그안에 다음과 같이 코딩해 보세요.

// 헤더를 추가
#include "EXTDLLState.h"
// DoModa() 함수 오버라이딩
int CMyDlg::DoModal()
{
   // 서로 다른 DLL이 각각의 리소스를 올바로 사용하기 위해
   // DoModal() 이 호출될때 CEXTDLLState 클래스의 인스턴스를 생성하고
   // DoModal() 함수가 종료될때 CEXTDLLState 클래스가 소멸하면서 리소스 연결처리를 자동으로 해준다.
   // 자세한 처리는 CEXTDLLState 클래스의 생성자와 소멸자를 참고한다.
   CEXTDLLState State;
   return CDialog::DoModal();
}

단지 위CEXTDLLState의 인스턴스인  State를 정의함으로써 자동으로 리소스를 연결하고 해제하도록 해줍니다.
이유는 생성자와 소멸자의 호출 메카니즘에 의해서이죠...
그럼 즐프하세요... ^^

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

WSS 블로그 windows me2dayzm 좀 개발환경 지름신 Azure me2sms 오류 me2photo 2010 수 인터파크 매뉴얼 협업 Buscuit twi2me Google Apps Engine 비스킷 moss SharePoint e-book Tutorial Visual Studio 친구 것 불만 MOSS 2007 java

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바