비고
다음 기술 정보는 온라인 설명서에 처음 포함되었으므로 업데이트되지 않았습니다. 따라서 일부 절차와 항목이 만료되거나 올바르지 않을 수 있습니다. 최신 정보는 온라인 설명서 인덱스의 관심 항목을 검색하는 것이 좋습니다.
이 참고에서는 Visual C++ 리소스 편집기가 단일 프로젝트에서 공유되거나 여러 프로젝트에서 공유되는 여러 리소스 파일 및 헤더 파일을 지원하는 방법과 해당 지원을 활용하는 방법을 설명합니다. 이 참고 사항은 다음과 같은 질문에 답변합니다.
프로젝트를 여러 리소스 파일 및/또는 헤더 파일로 분할할 수 있는 경우와 작업을 수행하는 방법
두
.H
파일 간에 공통 헤더.RC
파일을 공유하는 방법프로젝트 리소스를 여러
.RC
파일로 나누는 방법사용자(및 도구)가 파일 간의
.RC
.CPP
.H
빌드 종속성을 관리하는 방법
프로젝트에 추가 리소스 파일을 추가하는 경우 ClassWizard는 추가된 파일의 리소스를 인식하지 못합니다.
이 메모는 다음과 같이 위의 질문에 답변하도록 구성됩니다.
Visual C++에서 리소스 파일 및 헤더 파일을 관리하는 방법에 대한 개요 는 Visual C++의 리소스 집합 포함 명령을 통해 동일한 프로젝트에서 여러 리소스 파일 및 헤더 파일을 사용할 수 있는 방법에 대한 개요를 제공합니다.
AppWizard에서 만든 파일 및
.RC
파일 분석은 AppWizard에서 만든.H
애플리케이션에서 사용하는 여러 리소스 및 헤더 파일을 확인합니다. 이러한 파일은 프로젝트에 추가하려는 추가 리소스 파일 및 헤더 파일에 적합한 모델 역할을 합니다.추가 헤더 파일을 포함 하면 여러 헤더 파일을 포함할 수 있는 위치를 설명하고 이를 수행하는 방법을 자세히 설명합니다.
두
.RC
파일 간에 헤더 파일을 공유 하면 다른 프로젝트의 여러.RC
파일 또는 동일한 프로젝트에서 하나의 헤더 파일을 공유하는 방법이 표시됩니다.동일한 프로젝트에서 여러 리소스 파일을 사용하면 프로젝트를 여러
.RC
파일로 분리할 수 있는 위치를 설명하고 이를 수행하는 방법을 자세히 설명합니다.편집할 수 없는 Visual C++ 파일의 적용 은 Visual C++가 사용자 지정 리소스를 편집하고 의도치 않게 다시 포맷하지 않도록 하는 방법을 설명합니다.
여러 Visual C++에서 편집한
.RC
파일이 공유하는 기호를 관리 하면 여러.RC
파일에서 동일한 기호를 공유하는 방법과 중복 ID 숫자 값을 할당하지 않는 방법을 설명합니다..RC
,.CPP
,.H
파일 간의 종속성 관리는 Visual C++에서 리소스 심볼 파일에 의존하는 파일들이 불필요하게 재컴파일되지 않도록 하는 방법을 설명합니다.Visual C++에서 Set Includes 정보를 관리하는 방법은 Visual C++가 파일에 포함된
.RC
여러(중첩된).RC
파일 및 여러 헤더 파일을 추적하는 방법에 대한 기술 세부 정보를 제공합니다.
Visual C++가 리소스 파일 및 헤더 파일을 관리하는 방법 개요
Visual C++는 단일 .RC
리소스 파일과 해당 .H
헤더 파일을 긴밀하게 결합된 파일 쌍으로 관리합니다. 리소스를 .RC
파일에서 편집하고 저장할 때, 해당 .H
파일의 기호가 간접적으로 편집되고 저장됩니다. Visual C++의 MDI 사용자 인터페이스를 사용하여 한 번에 여러 .RC
파일을 열고 편집할 수 있지만 지정된 .RC
파일에 대해 정확히 하나의 해당 헤더 파일을 간접적으로 편집합니다.
리소스 뷰의 리소스 포함 기능 대화 상자
리소스 포함에 액세스하려면 리소스 보기를 연 다음 파일을 마우스 오른쪽 단추로 클릭하고 .RC
을 선택합니다.
기호 헤더 파일
기본적으로 Visual C++는 리소스 파일 RESOURCE.H
의 이름(예 MYAPP.RC
: )에 관계없이 항상 해당 헤더 파일의 이름을 지정합니다.
기호 헤더 파일: Visual C++의 리소스 포함 대화 상자에서 이 헤더 파일의 이름을 변경할 수 있습니다. 섹션의 편집 상자에 새 파일 이름을 입력합니다.
비고
.RC
파일과 동일한 디렉터리에 있지 않은 리소스 파일은 올바르게 읽히려면 이스케이프된 '\'가 포함된 상대 경로를 앞에 붙여야 합니다.
Read-Only 기호 지시문
Visual C++는 지정된 .RC
파일에 대해 하나의 헤더 파일만 편집하지만 Visual C++는 추가 읽기 전용 헤더 파일에 정의된 기호에 대한 참조를 지원합니다.
Read-Only 기호 지시문:리소스 포함 대화 상자의 섹션에서 추가 읽기 전용 헤더 파일을 Read-Only 기호 지시문으로 지정할 수 있습니다. "읽기 전용" 제한은 파일에 새 리소스 .RC
를 추가할 때 읽기 전용 헤더 파일에 정의된 기호를 사용할 수 있음을 의미합니다. 그러나 리소스를 삭제하는 경우 기호는 여전히 읽기 전용 헤더 파일에 정의되어 있습니다. 읽기 전용 기호에 할당된 숫자 값은 변경할 수 없습니다.
Compile-Time 지시문
Visual C++는 .RC
파일이 #include
지시문을 사용하여 다른 파일에 포함되는 리소스 파일의 중첩도 지원합니다. Visual C++를 사용하여 지정된 .RC
파일을 편집할 때 포함된 파일의 리소스는 표시되지 않습니다. 그러나 파일을 컴파일 .RC
하면 포함된 파일도 컴파일됩니다.
Compile-Time 지시문:리소스 포함 대화 상자의 섹션에서는 Compile-Time 지시문으로 포함할 파일 수를 .RC
지정할 수 있습니다.
Visual C++에서 .RC
파일을 읽을 때, Compile-Time 지시문으로 지정되지 않은 .RC
파일이 포함된 경우에 무엇이 발생하는지 주목하세요. 이 상황은 이전에 텍스트 편집기를 사용하여 수동으로 유지 관리하던 파일을 Visual C++ .RC
로 가져올 때 발생할 수 있습니다. Visual C++는 포함된 파일을 읽을 때 포함된 .RC
리소스를 부모 .RC
파일에 병합합니다. 부모 .RC
파일을 저장하면 #include
구문이 포함된 리소스로 사실상 대체됩니다. 이 병합이 발생하지 않기를 원한다면, Visual C++로 읽기 #include
부모 .RC
파일에서 문장을 제거하십시오. 그런 다음 Visual C++를 사용하여 #include
문을 Compile-Time 지시문으로 다시 추가해야 합니다.
Visual C++는 위의 세 가지 종류의 Set Includes 정보(기호 헤더 파일, Read-Only 기호 지시문 및 Compile-Time 지시문)를 .RC
파일 내의 #include
지시문과 리소스에 저장합니다.
TEXTINCLUDE
리소스는 일반적으로 처리할 필요가 없는 구현 세부 사항입니다. 이에 대한 정보는 Visual C++가 집합을 관리하는 방법에서 설명하고 있습니다.
AppWizard에서 만든 .RC
파일 및 .H
파일 분석
AppWizard에서 생성된 애플리케이션 코드를 검사하면 Visual C++에서 여러 리소스 파일 및 헤더 파일을 관리하는 방법에 대한 인사이트를 얻을 수 있습니다. 아래에서 검토한 코드 발췌문은 기본 옵션을 사용하여 AppWizard에서 생성한 애플리케이션에서 MYAPP
발췌한 것입니다.
AppWizard에서 만든 애플리케이션은 아래 다이어그램에 요약된 대로 여러 리소스 파일과 여러 헤더 파일을 사용합니다.
RESOURCE.H AFXRES.H
\ /
\ /
MYAPP.RC
|
|
RES\MYAPP.RC2
AFXRES.RC
AFXPRINT.RC
Visual C++ 파일/포함 설정 명령을 사용하여 이러한 여러 파일 관계를 볼 수 있습니다.
MYAPP.RC
Visual C++를 사용하여 편집하는 애플리케이션 리소스 파일입니다.
RESOURCE.H
는 애플리케이션별 헤더 파일입니다. 항상 AppWizard에 의해 이름이 지정 RESOURCE.H
되며, Visual C++의 헤더 파일 기본 이름 지정과 일치합니다. 이 헤더 파일의 #include
경우 리소스 파일(MYAPP.RC
)의 첫 번째 문입니다.
//Microsoft Visual C++ generated resource script
//
#include "resource.h"
RES\MYAPP.RC2
Visual C++에서 편집하지 않지만 최종 컴파일된 .EXE
파일에 포함되는 리소스를 포함합니다. Visual C++는 버전 리소스(이 릴리스의 새 기능)를 포함하여 모든 표준 리소스를 편집할 수 있으므로 AppWizard는 기본적으로 이러한 리소스를 생성하지 않습니다. 이 파일에 사용자 지정 형식의 리소스를 추가하려는 경우 AppWizard에서 빈 파일이 생성됩니다.
사용자 지정 서식이 지정된 리소스를 사용하는 경우 Visual C++ 텍스트 편집기를 사용하여 리소스를 RES\MYAPP.RC2
추가하고 편집할 수 있습니다.
AFXRES.RC
및 AFXPRINT.RC
프레임워크의 특정 기능에 필요한 표준 리소스를 포함합니다. 마찬가지로, RES\MYAPP.RC2
프레임워크에서 제공하는 두 리소스 파일은 MYAPP.RC
끝에 포함되며, 이것들은 포함 집합 대화 상자의 Compile-Time 지시문에 지정됩니다. 따라서 Visual C++에서 MYAPP.RC
를 편집할 때 프레임워크 리소스를 직접 보거나 편집하지는 않지만, 이는 애플리케이션의 바이너리 .RES
파일 및 최종 .EXE
파일로 컴파일됩니다. 수정 절차를 포함하여 표준 프레임워크 리소스에 대한 자세한 내용은 Technical Note 23을 참조하세요.
AFXRES.H
는 프레임워크에서 사용하고 특히 사용되는 표준 기호(예: ID_FILE_NEW
)를 정의합니다 AFXRES.RC
.
AFXRES.H
는 또한 #include
를 사용하여 Visual C++에서 생성된 WINRES.H
파일과 WINDOWS.H
에 필요한 .RC
의 하위 집합을 포함합니다AFXRES.RC
. 정의된 AFXRES.H
기호는 애플리케이션 리소스 파일(MYAPP.RC
)을 편집할 때 사용할 수 있습니다. 예를 들어 ID_FILE_NEW
는 File
파일의 메뉴 리소스에 있는 New
MYAPP.RC
메뉴 항목에 사용됩니다. 이러한 프레임워크 정의 기호는 변경하거나 삭제할 수 없습니다.
추가 헤더 파일 포함
AppWizard에서 만든 애플리케이션에는 두 개의 헤더 파일 RESOURCE.H
만 포함됩니다 AFXRES.H
. 애플리케이션별로만 RESOURCE.H
적용됩니다. 다음과 같은 경우에 추가 읽기 전용 헤더 파일을 포함해야 할 수 있습니다.
헤더 파일은 외부 원본에서 제공되거나 여러 프로젝트 또는 동일한 프로젝트의 여러 부분 간에 헤더 파일을 공유하려고 합니다.
헤더 파일에는 Visual C++가 파일을 저장할 때 변경하거나 필터링하지 않으려는 서식과 주석이 있습니다. 예를 들어 다음과 같은 기호 산술 연산을 사용하는 #define 유지하려고 할 수 있습니다.
#define RED 0
#define BLUE 1
#define GREEN 2
#define ID_COLOR_BUTTON 1001
#define ID_RED_BUTTON (ID_COLOR_BUTTON + RED)
#define ID_BLUE_BUTTON (ID_COLOR_BUTTON + BLUE)
#define ID_GREEN_BUTTON (ID_COLOR_BUTTON + GREEN)
Resource Includes 명령을 사용하여 문을 다음과 같이 두 번째 Read-Only 기호 지시문으로 지정 #include
하여 추가 읽기 전용 헤더 파일을 포함할 수 있습니다.
#include "afxres.h"
#include "second.h"
이제 새 파일 관계 다이어그램은 다음과 같습니다.
AFXRES.H
RESOURCE.H SECOND.H
\ /
\ /
MYAPP.RC
|
|
RES\MYAPP.RC2
AFXRES.RC
AFXPRINT.RC
두 .RC
파일 간에 헤더 파일 공유
서로 다른 프로젝트 또는 동일한 프로젝트에 있는 두 .RC
파일 간에 헤더 파일을 공유할 수 있습니다. 이렇게 하려면 위에서 설명한 Read-Only 지시문 기술을 두 .RC
파일 모두에 적용하세요. 두 .RC
파일이 서로 다른 애플리케이션(다른 프로젝트)에 대한 경우 결과는 다음 다이어그램에 나와 있습니다.
RESOURCE.H AFXRES.H RESOURCE.H
(for MYAPP1) SECOND.H (for MYAPP2)
\ / \ /
\ / \ /
MYAPP1.RC MYAPP2.RC
/ \ / \
/ \ / \
RES\MYAPP1.RC2 AFXRES.RC RES\MYAPP2.RC2
AFXPRINT.RC
두 번째 헤더 파일이 동일한 애플리케이션(프로젝트)의 두 .RC
파일에서 공유되는 경우는 아래에 설명되어 있습니다.
동일한 프로젝트에서 여러 리소스 파일 사용
Visual C++ 및 리소스 컴파일러는 동일한 프로젝트 내에서 여러 .RC
파일을 지원하며, 한 #include
파일을 다른 파일에 포함하는 .RC
지시문을 통해 가능합니다. 여러 번의 중첩이 허용됩니다. 프로젝트의 리소스를 여러 .RC
파일로 분할하는 데는 여러 가지 이유가 있습니다.
리소스를 여러
.RC
파일로 분할하는 경우 여러 프로젝트 팀 구성원 간에 많은 수의 리소스를 관리하는 것이 더 쉽습니다. 소스 제어 관리 패키지를 사용하여 파일을 체크 아웃하고 변경 내용을 체크 인하는 경우 리소스를 여러.RC
파일로 분할하면 리소스에 대한 변경 내용 관리를 더 세부적으로 제어할 수 있습니다.리소스의 일부에 대해 전처리기 지시문(예:
#ifdef
,#endif
및#define
)을 사용하려면 리소스 컴파일러에서 컴파일할 읽기 전용 리소스에서 격리해야 합니다.구성 요소
.RC
파일은 하나의 복합.RC
파일보다 Visual C++에서 더 빠르게 로드되고 저장됩니다.사용자가 읽을 수 있는 형식의 텍스트 편집기를 사용하여 리소스를 유지 관리하려면 Visual C++ 편집과 별도로 파일에 보관
.RC
해야 합니다.사용자 정의 리소스를 다른 특수 데이터 편집기에서 해석할 수 있는 이진 또는 텍스트 형식으로 유지해야 하는 경우 Visual C++에서 형식을 16진수 데이터로 변경하지 않도록 별도의
.RC
파일에 보관해야 합니다..WAV
MFC 고급 개념 샘플 SPEAKN의 (소리) 파일 리소스가 좋은 예입니다.
포함 설정 대화 상자의 Compile-Time 지시문에 SECOND.RC
를 포함할 수 있습니다.
#include "res\myapp.rc2" // non-Visual C++ edited resources
#include "second.rc" // THE SECOND .RC FILE
#include "afxres.rc" // Standard components
#include "afxprint.rc" // printing/print preview resources
결과는 다음 다이어그램에 나와 있습니다.
RESOURCE.H AFXRES.H
\ /
\ /
MYAPP.RC
|
|
RES\MYAPP.RC2
SECOND.RC
AFXRES.RC
AFXPRINT.RC
Compile-Time 지시문을 사용하여 Visual C++편집 가능 및 편집할 수 없는 리소스를 여러 .RC
파일로 구성할 수 있습니다. 여기서 주 MYAPP.RC
파일은 다른 #include
파일 외 .RC
에는 아무 작업도 수행하지 않습니다. Visual Studio C++ 프로젝트 .MAK
파일을 사용하는 경우 포함된 모든 리소스가 애플리케이션과 함께 컴파일되도록 프로젝트에 기본 .RC
파일을 포함해야 합니다.
편집할 수 없는 Visual C++ 파일 적용
AppWizard에서 만든 RES\MYAPP.RC2
파일은 서식 정보 손실 없이 Visual C++로 실수로 읽고 다시 작성하지 않도록 주의해야 하는 리소스가 포함된 파일의 예입니다. 이 문제를 방지하려면 파일의 시작 부분에 다음 줄을 배치합니다 RES\MYAPP.RC2
.
#ifdef APSTUDIO_INVOKED
#error this file is not editable by Visual C++
#endif //APSTUDIO_INVOKED
Visual C++는 .RC
파일을 컴파일할 때, APSTUDIO_INVOKED
과 RC_INVOKED
를 모두 정의합니다. AppWizard에서 만든 파일 구조가 손상되고 Visual C++가 위의 #error 줄을 읽는 경우 심각한 오류를 보고하고 파일 읽기를 .RC
중단합니다.
여러 Visual C++편집 .RC
파일이 공유하는 기호 관리
Visual C++에서 별도로 편집하려는 여러 .RC
파일로 리소스를 분할할 때 두 가지 문제가 발생합니다.
여러
.RC
파일에서 동일한 기호를 공유할 수 있습니다.Visual C++에서 고유 리소스(기호)에 동일한 ID 숫자 값을 할당하지 않도록 해야 합니다.
다음 다이어그램에서는 첫 번째 문제를 다루는 파일 및 .RC
.H
구성을 보여 줍니다.
MYAPP.RC
/ \
/ \
MYSTRS.H / MYSHARED.H \ MYMENUS.H
\ / / \ \ \
\ / / \ \ \
MYSTRS.RC MYMENUS.RC
이 예제에서는 문자열 리소스가 한 리소스 파일에 보관되고 메뉴는 다른 MYSTRS.RC
리소스 파일에 MYMENUS.RC
유지됩니다. 명령과 같은 일부 기호는 두 파일 간에 공유해야 할 수 있습니다. 예를 들어 도구 메뉴의 ID_TOOLS_SPELL
맞춤법 항목에 대한 메뉴 명령 ID일 수 있으며 애플리케이션의 주 창 상태 표시줄에 프레임워크에서 표시하는 명령 프롬프트의 문자열 ID일 수도 있습니다.
기호는 ID_TOOLS_SPELL
공유 헤더 파일에 유지됩니다 MYSHARED.H
. 텍스트 편집기를 사용하여 이 공유 헤더 파일을 수동으로 유지 관리합니다. Visual C++는 직접 편집하지 않습니다. 두 리소스 파일 MYSTRS.RC
및 MYMENUS.RC
에서 #include "MYSHARED.H"
명령을 사용하여 Read-Only 지시문에 MYAPP.RC
를 지정하고, 이는 에 대해 앞서 설명한 바와 같이 수행됩니다.
리소스를 식별하는 데 사용하기 전에 공유할 기호를 예상하는 것이 가장 편리합니다. 공유 헤더 파일에 기호를 추가하고, .RC
파일을 위한 Read-Only 지시문에 아직 공유 헤더 파일을 포함하지 않았다면, 기호를 사용하기 전에 포함하십시오. 이러한 방식으로 기호를 공유하는 것을 예상하지 못한 경우, 수동으로(텍스트 편집기를 사용하여) 기호에 대한 #define 문을 예를 들어 MYMENUS.H
에서 MYSHARED.H
로 이동한 후, MYSTRS.RC
에서 사용하기 전에 배치해야 합니다.
여러 .RC
파일에서 기호를 관리하는 경우 Visual C++가 고유 리소스(기호)에 동일한 ID 숫자 값을 할당하지 않도록 해야 합니다. 지정된 .RC
파일의 경우 Visual C++는 4개의 ID 도메인 각각에 ID를 증분 방식으로 할당합니다. 편집 세션 사이에 Visual C++는 .RC
파일에 대한 기호 헤더 파일에서 각 도메인에 할당된 마지막 ID를 추적합니다. 빈(새) APS_NEXT
파일의 .RC
값은 다음과 같습니다.
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
_APS_NEXT_RESOURCE_VALUE
는 대화 상자 리소스, 메뉴 리소스 등에 사용할 다음 기호 값입니다. 리소스 기호 값의 유효한 범위는 1에서 0x6FFF까지입니다.
_APS_NEXT_COMMAND_VALUE
는 명령 식별에 사용할 다음 기호 값입니다. 명령 기호 값의 유효한 범위는 0xDFFF 0x8000.
_APS_NEXT_CONTROL_VALUE
는 대화 상자 컨트롤에 사용할 다음 기호 값입니다. 대화 상자 컨트롤 기호 값의 유효한 범위는 8에서 0xDFFF까지입니다.
_APS_NEXT_SYMED_VALUE
는 기호 브라우저에서 새 명령을 사용하여 기호 값을 수동으로 할당할 때 발급되는 다음 기호 값입니다.
Visual C++는 새 .RC
파일을 만들 때 가장 낮은 법적 값인 약간 더 높은 값으로 시작합니다. 또한 AppWizard는 이러한 값을 MFC 애플리케이션에 더 적합한 값으로 초기화합니다. ID 값 범위에 대한 자세한 내용은 Technical Note 20을 참조하세요.
이제 동일한 프로젝트에서도 새 리소스 파일을 만들 때마다 Visual C++는 동일한 _APS_NEXT_
값을 정의합니다. 즉, 서로 다른 .RC
두 파일에서 여러 대화 상자를 추가하면 동일한 #define 값이 서로 다른 대화 상자에 할당될 가능성이 높습니다. 예를 들어 IDD_MY_DLG1
첫 번째 .RC
파일에는 두 번째 IDD_MY_DLG2
파일과 동일한 번호인 101 .RC
이 할당될 수 있습니다.
이 문제를 방지하려면 해당 .RC
파일에 있는 ID의 4개 도메인 각각에 대해 별도의 숫자 범위를 예약해야 합니다. 리소스 추가를 시작하기 _APS_NEXT
각 파일의 .RC
값을 수동으로 업데이트 하여 범위를 설정합니다. 예를 들어 첫 번째 .RC
파일이 기본값 _APS_NEXT
을 사용하는 경우 두 번째 _APS_NEXT
파일에 다음 .RC
값을 할당할 수 있습니다.
#define _APS_NEXT_RESOURCE_VALUE 2000
#define _APS_NEXT_COMMAND_VALUE 42000
#define _APS_NEXT_CONTROL_VALUE 2000
#define _APS_NEXT_SYMED_VALUE 2000
물론 Visual C++는 첫 번째 .RC
파일에 너무 많은 ID를 할당하여 숫자 값이 두 번째 .RC
파일에 예약된 값과 겹치기 시작할 수 있습니다. 이 충돌이 발생하지 않도록 충분히 큰 범위를 예약해야 합니다.
.RC
, .CPP
, 및 .H
파일 간의 종속성 관리
Visual C++에서 .RC
파일을 저장하면 해당 RESOURCE.H
파일에 대한 기호 변경 내용도 저장됩니다.
.CPP
파일의 리소스를 참조하는 파일은 .RC
을 사용하여 #include
파일을 포함해야 합니다. 일반적으로 프로젝트의 기본 헤더 파일 내에서 포함됩니다. 이러한 포함은 원본 파일에서 헤더 종속성을 검색하는 개발 환경의 내부 프로젝트 관리로 인해 바람직하지 않은 부작용으로 이어집니다. Visual C++에서 새 기호를 추가할 때마다 지시문이 있는 .CPP
모든 #include "RESOURCE.H"
파일을 다시 컴파일해야 합니다.
Visual C++는 파일 RESOURCE.H
의 첫 번째 줄에 다음 주석을 포함하여 RESOURCE.H
에 대한 의존성을 피합니다.
//{{NO_DEPENDENCIES}}
개발 환경에서는 종속 RESOURCE.H
파일을 다시 컴파일할 필요가 없도록 .CPP
변경 내용을 무시하여 이 주석을 해석합니다.
Visual C++는 파일을 저장할 때 항상 //{{NO_DEPENDENCIES}}
주석 줄을 .RC
파일에 추가합니다. 빌드 종속성을 RESOURCE.H
우회하는 경우, 연결 시 탐지되지 않은 런타임 오류가 발생할 수 있습니다. 예를 들어 기호 브라우저를 사용하여 리소스의 기호에 할당된 숫자 값을 변경하는 경우 리소스를 참조하는 파일이 다시 컴파일되지 않으면 애플리케이션 런타임 .CPP
에 리소스를 올바르게 찾아서 로드하지 않습니다. 이러한 경우 기호 변경 내용 .CPP
의 영향을 받는 모든 RESOURCE.H
파일을 명시적으로 다시 컴파일하거나 모두 다시 빌드를 선택해야 합니다. 특정 리소스 그룹에 대한 기호 값을 자주 변경해야 하는 경우 추가 헤더 파일을 포함하여 위의 섹션에 설명된 대로 이러한 기호를 별도의 읽기 전용 헤더 파일로 분리하는 것이 더 편리하고 안전할 수 있습니다.
Visual C++가 Set Includes 정보를 관리하는 방법
위에서 설명한 대로 파일 메뉴 집합 포함 명령을 사용하면 다음 세 가지 유형의 정보를 지정할 수 있습니다.
기호 헤더 파일
Read-Only 기호 지시문
Compile-Time 지시문
다음 표에서는 Visual C++가 파일에서 .RC
이 정보를 유지 관리하는 방법을 설명합니다. Visual C++를 사용하려면 이 정보가 필요하지 않지만, 포함 집합 기능을 보다 자신 있게 사용할 수 있도록 이해를 향상시킬 수 있습니다.
위의 세 가지 유형의 Set Includes 정보는 각각 두 가지 형식으로 파일에 저장 .RC
됩니다. (1) 리소스 컴파일러에서 해석할 수 있는 다른 지시문과 #include
(2) Visual C++에서만 해석할 수 있는 특수 TEXTINCLUDE
리소스입니다.
리소스의 TEXTINCLUDE
목적은 Visual C++의 [포함 집합] 대화 상자에서 쉽게 표시할 수 있는 양식에 포함 설정 정보를 안전하게 저장하는 것입니다.
TEXTINCLUDE
는 Visual C++에서 정의한 리소스 종류 입니다. Visual C++는 리소스 ID 번호가 1, 2 및 3인 세 가지 특정 TEXTINCLUDE
리소스를 인식합니다.
TEXTINCLUDE 리소스 ID |
집합 유형에 대한 정보 포함 |
---|---|
1 | 기호 헤더 파일 |
2 | Read-Only 기호 지시문 |
3 | Compile-Time 지시문 |
AppWizard에서 만든 기본 MYAPP.RC
및 RESOURCE.H
파일로 설명된 대로, 'Set Includes' 정보의 세 가지 유형이 각각 아래에 설명되어 있습니다. RC 구문에서는 널로 종료된 문자열과 큰따옴표 문자를 각각 지정하기 위해 \0
및 ""
블록 사이에 추가 BEGIN
및 END
토큰이 필요합니다.
기호 헤더 파일
리소스 컴파일러에서 해석하는 기호 헤더 파일 정보의 형식은 단순히 문입니다.#include
#include "resource.h"
해당 리소스는 다음과 같습니다 TEXTINCLUDE
.
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
Read-Only 기호 지시문
Read-Only 기호 지시문은 리소스 컴파일러에서 해석할 수 있는 다음 형식의 MYAPP.RC
맨 위에 포함됩니다.
#include "afxres.h"
해당 리소스는 다음과 같습니다 TEXTINCLUDE
.
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
Compile-Time 지시문
Compile-Time 지시문은 리소스 컴파일러에서 해석할 수 있는 다음 형식의 MYAPP.RC
끝에 포함됩니다.
#ifndef APSTUDIO_INVOKED
///////////////////////
//
// From TEXTINCLUDE 3
//
#include "res\myapp.rc2" // non-Visual C++ edited resources
#include "afxres.rc" // Standard components
#include "afxprint.rc" // printing/print preview resources
#endif // not APSTUDIO_INVOKED
#ifndef APSTUDIO_INVOKED
지시문은 Visual C++에게 Compile-Time 지시문들을 건너뛰도록 지시합니다.
해당 리소스는 다음과 같습니다 TEXTINCLUDE
.
3 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""res\myapp.rc2"" // non-Visual C++ edited resources\r\n"
"\r\n"
"#include ""afxres.rc"" // Standard components\r\n"
"#include ""afxprint.rc"" // printing/print preview resources\r\n"
"\0"
END
참고하십시오
숫자로 된 기술 노트
범주별 기술 정보