리소스 파일 형식

이 섹션에서는 리소스 정의 파일의 내용을 기반으로 리소스 컴파일러가 만드는 이진 리소스 파일의 형식에 대해 설명합니다. 이 파일의 확장명은 일반적으로 .res입니다. 링커는 .res 파일을 리소스 개체 파일로 다시 포맷한 다음 애플리케이션의 실행 파일에 연결합니다.

이진 리소스 파일은 여러 개의 연결된 리소스 항목으로 구성됩니다. 각 항목은 리소스 헤더와 해당 리소스에 대한 데이터로 구성됩니다. 리소스 헤더는 파일에서 DWORD로 정렬되며 다음으로 구성됩니다.

  • 리소스 헤더의 크기를 포함하는 DWORD
  • 리소스 데이터의 크기를 포함하는 DWORD
  • 리소스 종류
  • 리소스 이름
  • 추가 리소스 정보

RESOURCEHEADER 구조는 이 헤더의 형식을 설명합니다. 리소스에 대한 데이터는 리소스 헤더를 따르며 각 리소스 유형에 따라 다릅니다. 또한 일부 리소스는 리소스별 그룹 헤더 구조를 사용하여 리소스 그룹에 대한 정보를 제공합니다.

가속기 테이블 리소스

액셀러레이터 테이블은 리소스 파일의 하나의 리소스 항목입니다. 그룹 헤더가 없습니다. ACCELTABLEENTRY 구조체는 액셀러레이터 테이블의 각 항목을 설명합니다. 여러 가속기 테이블이 허용됩니다.

커서 및 아이콘 리소스

시스템은 각 아이콘과 커서를 단일 파일로 처리합니다. 그러나 이러한 파일은 .res 파일 및 실행 파일에 RT_GROUP_ICON 아이콘 리소스 그룹 또는 커서 리소스의 RT_GROUP_CURSOR 그룹으로 저장됩니다. 아이콘 및 커서 리소스의 파일 형식은 비슷합니다. .res 파일에서 리소스 그룹 헤더는 모든 개별 아이콘 또는 커서 그룹 구성 요소를 따릅니다.

아이콘 및 커서 리소스 모두에 대한 그룹 헤더는 NEWHEADER 구조체와 하나 이상의 RESDIR 구조체로 구성됩니다. 각 아이콘 또는 커서에 대해 하나의 RESDIR 구조가 있습니다. 그룹 헤더에는 애플리케이션이 표시할 올바른 아이콘 또는 커서를 선택하는 데 필요한 정보가 포함됩니다. 그룹 머리글과 그룹의 각 아이콘 또는 커서에 대해 반복되는 데이터는 모두 고정 길이입니다. 이렇게 하면 애플리케이션이 정보에 임의로 액세스할 수 있습니다.

RT_ICON 아이콘 또는 RT_CURSOR 커서 리소스 구성 요소의 형식은 .ico/.cur 파일의 형식과 매우 유사합니다. 각 이미지는 BITMAPINFO 구조에 저장되고 아이콘 XOR 마스크의 색 디바이스 독립적 비트맵(DIB) 비트가 뒤에 저장됩니다. AND 마스크의 단색 DIB 비트는 색 DIB 비트를 따릅니다. 커서와 아이콘 간의 중요한 차이점은 커서에 비트맵 데이터 앞에 핫스폿이 삽입된 LOCALHEADER 구조가 있지만 아이콘은 삽입되지 않는다는 점입니다.

Windows Vista RT_ICON 아이콘 또는 RT_CURSOR 커서 리소스에는 PNG 압축 이미지 데이터가 포함될 수 있습니다.

대화 상자 리소스

대화 상자는 리소스 파일의 하나의 리소스 항목이기도 합니다. DLGTEMPLATE 대화 상자 헤더 구조와 대화 상자의 각 컨트롤에 대해 하나의 DLGITEMTEMPLATE 구조로 구성됩니다. DLGTEMPLATEEXDLGITEMTEMPLATEEX 구조체는 확장 대화 상자 리소스의 형식을 설명합니다.

글꼴 리소스

글꼴은 리소스 그룹으로 리소스 파일에 저장됩니다. 개별 글꼴은 글꼴 그룹을 구성합니다. 의 FONT 문 리소스 정의 문입니다. RC 파일은 각 글꼴을 정의합니다. 리소스의 각 개별 글꼴은 관련 .fnt 파일의 전체 콘텐츠로 구성됩니다. FONTGROUPHDR 구조체는 .res 파일의 모든 개별 글꼴 구성 요소를 따릅니다.

글꼴 리소스는 특정 애플리케이션의 리소스에 추가되지 않습니다. 대신 일반적으로 확장명이 .fon인 실행 파일에 추가됩니다. 이러한 파일은 일반적으로 애플리케이션이 아닌 리소스 전용 DLL입니다.

메뉴 리소스MENUHEADER 구조와 메뉴 템플릿의 각 메뉴 항목에 대해 하나씩 하나 이상의 NORMALMENUITEM 또는 POPUPMENUITEM 구조로 구성됩니다. MENUEX_TEMPLATE_HEADERMENUEX_TEMPLATE_ITEM 구조는 확장 메뉴 리소스의 형식을 설명합니다.

메시지 테이블 리소스

메시지 테이블은 오류 메시지 또는 메시지 상자에 표시할 서식이 지정된 텍스트를 포함하는 리소스입니다. 메시지 테이블 리소스의 기본 구조는 MESSAGE_RESOURCE_DATA 구조입니다.

버전 리소스

버전 리소스의 기본 구조는 VS_FIXEDFILEINFO 구조입니다. 추가 구조에는 언어 정보 데이터를 저장하는 VarFileInfo 구조와 사용자 정의 문자열 정보에 대한 StringFileInfo 가 포함됩니다. 버전 리소스의 모든 문자열은 유니코드 형식입니다. 각 정보 블록은 DWORD 경계에 맞춰집니다.