순수 리소스 DLL 생성 및 호출

3524 단어 dll
수천 개의 정청으로 노래를 들을 때, 대화상자, 메뉴, 아이콘 등 모든 자원을 ttpres에 두는 것을 알 수 있다.dll의 동적 라이브러리에서 이런 사용법에 대해 줄곧 궁금했는데 하루가 걸려서 마침내 깨달았다.  순수 자원 DLL은 아이콘, 비트맵, 문자열 및 대화 상자와 같은 자원만 포함하는 DLL입니다.순수 리소스 DLL을 사용하는 것은 여러 프로그램 간에 동일한 리소스 그룹을 공유하는 가장 좋은 방법입니다.다양한 언어로 로컬화된 리소스를 제공하는 것도 좋은 방법입니다.

순수 리소스 DLL 생성


순수 리소스 DLL을 만들려면 새 Win32 DLL(비 MFC) 프로젝트를 만들고 리소스를 이 프로젝트에 추가합니다.

  • [새 프로젝트] 대화 상자에서 [Win32 프로젝트]를 선택하고 [Win32 프로젝트 마법사]에서 DLL 프로젝트 유형을 지정합니다.
  • DLL에 대한 리소스(예: 문자열 또는 메뉴)를 포함하는 새 리소스 스크립트를 만들고 저장합니다.rc 파일.
  • '프로젝트' 메뉴에서 '기존 항목 추가' 를 누르고 프로젝트에 새 항목을 삽입합니다.rc 파일.
  • /NOENTRY 링크 옵션을 지정합니다./NOENTRY 차단 링크는 다음을 수행합니다.main 참조가 DLL에 링크됩니다.이 옵션은 순수 리소스 DLL 생성에 필요합니다.
  • DLL 생성

  •  
    순수 리소스 DLL을 사용하는 응용 프로그램은 LoadLibrary를 호출하여 DLL에 명시적으로 링크해야 합니다.리소스에 액세스하려면 일반 함수 FindResource 및 LoadResource를 호출합니다. 이 두 함수는 모든 리소스 유형에 유효하거나 다음 리소스별 함수 중 하나를 호출합니다.
  • FormatMessage
  • LoadAccelerators
  • LoadBitmap
  • LoadCursor
  • LoadIcon
  • LoadMenu
  • LoadString

  • 리소스를 사용한 후에는 응용 프로그램에서 FreeLibrary를 호출해야 합니다.

    자원 DLL 호출


    일부 리소스 동적 라이브러리 호출의 경우 DLL 핸들을 가져오고 DLL 핸들과 리소스 ID를 통해 리소스 핸들을 가져오는 것이 아니라 BMP의 경우 코드는 다음과 같습니다.
     1 hmodule = LoadLibrary("ExtendDLL.dll");     //  DLL       
    
     2 HDC   m_hdcMem; 
    
     3 m_hdcMem = CreateCompatibleDC(hdc); 
    
     4 BITMAP bm; 
    
     5 RECT rect; 
    
     6 
    
     7 HBITMAP    hBitmap =  LoadBitmap(hmodule,"DIB_BKGD_HF");   //  BMP   
    
     8 GetObject( hBitmap, sizeof BITMAP, &bm); 
    
     9 SelectObject( m_hdcMem, hBitmap); 
    
    10 GetClientRect( hWnd, &rect); 
    
    11 BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,m_hdcMem,0,0,SRCCOPY); 
    
    12 ReleaseDC( hWnd, m_hdcMem ); 
    
    13 FreeLibrary(hmodule); 

     
    천천정청처럼 사용하면 이럴 필요가 없습니다. 모든 자원은 DLL에 있습니다. 프로그램 창을 초기화하기 전에 AfxSetResourceHandle로 자원 모듈을 지정하고 해당하는 DLL 자원 파일 Resource를 포함합니다.h는 정상적으로 만들어진 것과 같이 사용할 수 있지만 종료할 때 DLL을 방출하는 것을 주의하십시오.구체적으로는 더 이상 말하지 않겠다. 모두 코드를 봐라!
    순수 리소스 대화 상자의 예:
    ResDlgDemo.zip

    좋은 웹페이지 즐겨찾기