다음을 통해 공유


TN035: 리소스 파일 및 헤더 파일을 여러 Visual C++를 사용합니다.

[!참고]

온라인 설명서의을 처음 포함 되었습니다 때문 다음 기술 참고 업데이트 되지 않았습니다.따라서 일부 절차 및 항목 오래 되었거나 잘못 된 수 있습니다.최신 정보는 온라인 설명서 색인에서 관심 있는 주제에 대해 검색 하는 것이 좋습니다.

이 주석은 Visual C++ 리소스 편집기에서 여러 리소스 파일을 지 원하는 방법에 대해 설명 합니다 및 헤더 파일 공유를 단일 프로젝트 또는 다중 프로젝트와 어떻게 지원을 활용할 수 있습니다 간에 공유 됩니다.이 참고가 이러한 질문에 대답합니다.

  • 여러 리소스 파일 및/또는 헤더 파일에는 프로젝트와 같이 분할 하려는 경우 수 있습니다?

  • 일반적인 헤더를 공유 하려면 어떻게.두 파일을 H입니다.RC 파일?

  • 어떻게 여러 프로젝트 리소스를 나누지 마십시오.RC 파일?

  • 어떻게 (및 도구) 사이의 빌드 종속성 관리 합니다.RC입니다.CPP를 하 고 있습니다.H 파일?

추가 리소스 파일을 프로젝트에 추가 하는 경우 클래스 마법사 추가 파일의 리소스를 인식 합니다 알고 있어야 합니다.

이 노트는 다음과 같이 위의 질문에 구성 됩니다.

  • Overview of How Visual C++ Manages Resource Files and Header FilesVisual C++의 리소스 집합을 포함 명령을 여러 리소스 파일과 같은 프로젝트에 헤더 파일을 사용할 수 있습니다 방법에 대 한 개요를 제공 합니다.

  • Analysis of AppWizard-created .RC and .H Files응용 프로그램 마법사에서 만든 응용 프로그램에서 사용 되는 여러 리소스 및 헤더 파일에 살펴봅니다.이러한 파일 추가 리소스 파일 및 헤더 파일을 프로젝트에 추가할 수 있습니다 위한 좋은 모델 역할을 합니다.

  • Including Additional Header Files여러 개의 헤더 파일을 포함 시킬 수도 있습니다 하 고 그렇게 하는 방법을 자세히 설명 합니다.

  • Sharing a Header File Between Two .RC Files간의 여러 헤더 파일을 공유 하는 방법 보여 줍니다.서로 다른 프로젝트에서 또는 동일한 프로젝트에서 RC 파일입니다.

  • Using Multiple Resource Files in the Same Project여러 프로젝트로 분할 위치를 설명 합니다.RC 파일과 작업을 수행 하는 방법을 자세히 설명 합니다.

  • Enforcement of Non-Editable Visual C++ Files어떻게 하면 Visual C++ 편집 하지 않고 사용자 지정 리소스를 실수로 포맷 되는지 확인할 수 있습니다 설명 합니다.

  • Managing Symbols Shared by Multiple Visual C++-Edited .RC Files여러 문장 부호와 공유 하는 방법에 설명 합니다.RC 파일 및 중복 ID 숫자 값을 할당 하지 않도록 하는 방법.

  • Managing Dependencies Between .RC, .CPP, and .H Files불필요 한 다시 컴파일하지 Visual C++를 어떻게 피할 수에 대해 설명 합니다.리소스 기호 파일에 의존 하는 CPP 파일입니다.

  • How Visual C++ Manages Set Includes Information어떻게 Visual C++ 다중 (중첩)을 추적 하는 방법에 대 한 기술 정보를 제공 합니다.RC 파일 및 # include'd으로 된 여러 개의 헤더 파일에 있습니다.RC 파일입니다.

개요는 Visual C++ 리소스 파일 및 헤더 파일을 관리합니다.

Visual C++는 단일을 관리합니다.RC 리소스 파일과 해당 합니다.밀접 하 게 결합 된 파일 쌍으로 H 헤더 파일입니다.편집 하 고 리소스에 저장 된.RC 파일을 간접적으로 편집 하 고 해당 기호를 저장 합니다.H 파일입니다.열고 다중 편집 수 있지만.RC 파일 (Visual C++ MDI 사용자 인터페이스를 사용 하 여) 한 번에 주어진.RC 파일을 하나만 해당 헤더 파일을 직접 편집 합니다.

기호 헤더 파일

기본적으로 Visual C++ 항상 리소스는 해당 헤더 파일을 이름을 지정 합니다.(예를 들어, MYAPP 리소스 파일의 이름에 관계 없이 H.RC)입니다.사용 하는 리소스를 포함 명령에서 보기 Visual C++에 대 한 메뉴에서 변경할 수 있습니다이 헤더 파일의 이름을 파일에서 기호 헤더 파일을 업데이트 하 여는 설정 포함 대화 상자.

읽기 전용 기호 지시문

Visual C++ 헤더 파일을 하나 하나 주어진 편집만 하지만.RC 파일을 Visual C++ 추가 읽기 전용 헤더 파일에 정의 된 기호에 대 한 참조를 지원 합니다.사용 하는 포함 리소스 명령에서 보기 메뉴 Visual C++에서 원하는 만큼 추가 읽기 전용 헤더 파일이 읽기 전용 기호 지시문으로 지정할 수 있습니다.새 리소스를 추가 하면 "읽기 전용" 제한을 의미는.RC 파일을 읽기 전용으로 헤더 파일에 정의 된 기호를 사용할 수 있습니다. 하지만 리소스를 삭제 하면 기호 여전히 읽기 전용 헤더 파일에 정의 된 남아 있습니다.읽기 전용 기호에 지정 된 숫자 값을 변경할 수 없습니다.

컴파일 타임 지시문

Visual C++도 하나 있는 리소스 파일의 중첩을 지원 합니다.RC 파일 내의 다른 include'd #입니다.편집 하는 경우를 지정 합니다.Visual C++에서 # include'd 파일에 있는 리소스를 사용 하 여 RC 파일이 보이지 않습니다.그러나 컴파일할 때의.RC 파일을 # include'd 파일 또한 컴파일됩니다.사용 하는 리소스 내용 명령에서 보기 메뉴에서 Visual C++에서 # include'd 원하는 만큼 지정할 수 있습니다.RC 파일로 컴파일 타임 지시문입니다.

어떻게 참고로 Visual C++를 읽을 경우에.# Include RC 파일이 다른의.RC 파일 않은 컴파일 타임 지시문으로 지정 합니다.Visual C++를 가져올 때 이러한 상황이 발생할 수 있는.RC 파일을 이전에 수동으로 텍스트 편집기로 관리 되어 있었습니다.Visual C++ include'd # 읽습니다.RC 파일을 # include'd 리소스 부모에 병합합니다.RC 파일입니다.부모를 저장할 때.RC 파일을 # include 문을 사실 # include'd 리소스에 의해 대체 됩니다.이 병합을 수행 하지 않으려면 #은 제거 해야 문에서 부모를 포함 합니다.RC 파일 이전 을 읽는 Visual C++로. 다음 Visual C++를 사용 하 여 추가 다시 같은 # include 문은 컴파일 타임 지시문으로.

Visual C++ 저장에.RC 파일의 세 가지 종류의 설정 포함 위 정보 (기호 헤더 파일, 읽기 전용 기호 지시문 및 컴파일 타임 지시문) #에서 include 지시문 TEXTINCLUDE 리소스에 있습니다.TEXTINCLUDE 리소스, 일반적으로 다루기에 필요 하지 않은 세부 설명 는 Visual C++ 관리 설정 포함 정보.

응용 프로그램 마법사가 만든의 분석입니다.RC 및.H 파일

응용 프로그램 마법사에서 생성 하는 응용 프로그램 코드를 검사 하는 통찰력으로 Visual C++에서 여러 리소스 파일 및 헤더 파일을 관리 하는 방법을 제공 합니다.기본 옵션을 사용 하 여 응용 프로그램 마법사에서 생성 하는 응용 프로그램 MYAPP 아래 검사 코드 발췌 한 내용입니다.

아래 다이어그램에 요약 된 대로 여러 리소스 파일 및 헤더 파일을 여러 응용 프로그램 마법사에서 만든 응용 프로그램을 사용 합니다.

   RESOURCE.H     AFXRES.H                    
          \       /                              
           \     /                                
          MYAPP.RC                               
              |                                
              |                              
        RES\MYAPP.RC2  
        AFXRES.RC                   
        AFXPRINT.RC                 

Visual C++ 파일/세트 포함 명령을 사용 하 여 이러한 여러 파일 관계를 볼 수 있습니다.

  • MYAPP입니다.RC
    Visual C++를 사용 하 여 편집 하는 응용 프로그램 리소스 파일입니다.

리소스입니다.H의 응용 프로그램별 헤더 파일입니다.항상 리소스를 라고 합니다.응용 프로그램 마법사에서 Visual C++ 기본으로 일관 된 H 헤더 파일의 이름을 지정 합니다.# 포함 리소스 파일 (MYAPP. 첫 번째 문에서이 헤더 파일에 대 한RC):

//Microsoft Visual C++ generated resource script
//
#include "resource.h"
  • RES\MYAPP입니다.RC2
    Visual C++에서 편집할 수 없습니다 있지만 컴파일된 최종 포함될지 리소스가 들어 있습니다.EXE 파일입니다.Visual C++ 표준 버전 리소스 (이 릴리스의 새 기능)을 비롯 한 리소스를 모두 편집할 수 있으므로 응용 프로그램 마법사는 리소스 없음 기본적으로 만듭니다.사용자 고유의 사용자 지정 형식의 리소스를이 파일에 추가 하려는 경우 빈 파일은 응용 프로그램 마법사에서 생성 됩니다.

사용자 지정 형식의 리소스를 사용 하는 경우 RES\MYAPP을 추가할 수 있습니다.RC2 및 Visual C++ 텍스트 편집기를 사용 하 여 편집 합니다.

AFXRES입니다.RC 및 AFXPRINT입니다.RC 프레임 워크의 특정 기능에 필요한 표준 리소스를 포함 합니다.RES\MYAPP 처럼.RC2, # include'd MYAPP 끝에 이러한 두 프레임 워크에서 제공 하는 리소스 파일입니다.RC, 및 이러한 포함 설정 대화 상자의 컴파일 타임 지시문으로 지정 됩니다.따라서 하지 않습니다 직접 보거나 MYAPP를 편집 하는 동안 이러한 프레임 워크 리소스를 편집 합니다.Visual C++에서 RC 하지만 이러한 응용 프로그램의 이진 파일에 컴파일됩니다.RES 파일 및 최종입니다.EXE 파일입니다.표준 프레임 워크 리소스를 수정 하는 절차를 비롯 하 여에 대 한 자세한 내용은 참조 하십시오. 기술 참고 23.

AFXRES입니다.H는 표준 기호 같은 정의 ID_FILE_NEW프레임 워크에 의해 사용, 특히 AFXRES에 사용 합니다.RC입니다.AFXRES입니다.또한 # include h의 WINRES.H, WINDOWS의 하위 집합을 포함 합니다.H 생성 NET가 필요 합니다.RC 파일 뿐만 아니라 AFXRES입니다.RC입니다.AFXRES에 정의 된 기호입니다.응용 프로그램 리소스 파일 (MYAPP. 편집할 때 H 사용할 수 있는RC)입니다.예를 들어, ID_FILE_NEW 에서 MYAPP 파일 새 메뉴 항목을 사용 합니다.RC의 메뉴 리소스입니다.변경 하거나 이러한 프레임 워크 정의 기호를 삭제할 수 없습니다.

추가 헤더 파일 포함

응용 프로그램 마법사에서 만든 응용 프로그램에 두 개의 헤더 파일 포함: 자원.H 및 AFXRES입니다.H.만 리소스입니다.H는 특정 응용 프로그램입니다.다음과 같은 경우에 추가 읽기 전용 헤더 파일을 포함 해야 합니다.

헤더 파일에서 외부 소스를 제공 하거나 여러 프로젝트나 동일한 프로젝트의 여러 부분 간에 헤더 파일을 공유 하려는.

Visual C++ 변경 하거나 파일을 저장 하는 경우 필터링 않으려는 메모 서식 및 헤더 파일에 있습니다.예를 들어, 어쩌면 # 유지 하려면 원하는 정의 기호화 된 산술 연산 같은 사용:

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

사용 하 여 추가 읽기 전용 헤더 파일을 포함할 수는 리소스를 포함 에서 # include 문을 두 번째 읽기 전용 기호 지시문으로 지정 하는 명령:

#include "afxres.h"
#include "second.h"

이제 새 관계 다이어그램 파일 다음과 같이 나타납니다.

                   AFXRES.H       
    RESOURCE.H     SECOND.H                    
          \       /                              
           \     /                                
          MYAPP.RC   
              |                                
              |                              
        RES\MYAPP.RC2  
        AFXRES.RC                   
        AFXPRINT.RC                 

두 헤더 파일을 공유 합니다.RC 파일

두 헤더 파일을 공유 할 수 있습니다.서로 다른 프로젝트 또는 동일한 프로젝트에 RC 파일.이렇게 하려면 위에서 설명한 두 가지를 모두 읽기 전용 지시문 기술을 적용 하기만 하면 됩니다.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                 

두 번째 헤더 파일 2로 공유 되는 경우.RC 파일에서 동일한 응용 프로그램 (프로젝트) 아래에 설명 되어 있습니다.

동일한 프로젝트의 여러 리소스 파일을 사용 하 여

여러 visual C++ 및 리소스 컴파일러를 지원합니다.RC 파일 같은 프로젝트를 통해 # 포함의 하나입니다.RC 파일에서 다른입니다.다중 중첩 허용 됩니다.여러 프로젝트의 리소스를 분할 하는 여러 가지가 있습니다.RC 파일:

  • 여러 리소스를 분할 하는 경우 많은 여러 프로젝트 팀 구성원 간에 리소스를 관리 하는 것이 더 쉽습니다.RC 파일입니다.소스 제어 관리 패키지 파일을 체크 아웃 하 고 변경 내용을 체크 인하기 위해 여러 리소스 분할 사용 하는 경우.RC 파일 리소스에 대 한 변경 내용 관리를 통해 세밀 하 게 제어를 제공 합니다.

  • # Ifdef 등 전처리기 지시문을 사용 하려는 경우 # endif, #, 자원의 부분에 대 한 정의 리소스 컴파일러에 의해 컴파일됩니다 읽기 전용 리소스를 분리 해야 합니다.

  • 구성 요소입니다.RC 파일 로드 하 고 하나의 합성 보다 빠르게 Visual C++에 저장 됩니다.RC 파일입니다.

  • 사람이 읽을 수 있는 형태로 텍스트 편집기와 리소스를 유지 하려는 경우 사용 해야 한 합니다.하나의 Visual C에서 별도 RC 파일을 편집합니다.

  • 그런 다음 사용자 정의 자원에 다른 특수 데이터 편집기로 해석할 이진 또는 텍스트 형태로 유지 하는 경우는 별도의 유지 해야 합니다.Visual C++ 16 진수 데이터 형식은 바뀌지 않습니다 있도록 RC 파일입니다..WAV (사운드) 파일 리소스 고급 개념 MFC 샘플에서 SPEAKN 좋은 예입니다.

# 수 초를 포함 합니다.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                 

컴파일 타임 지시문을 사용 하 여 여러 Visual C++ 편집 가능 하 고 편집할 수 없는 리소스를 구성할 수 있습니다.RC 파일에 있는 "마스터" MYAPP.# 포함 다른 RC 아무 작업도 하지 않습니다.RC 파일입니다.Visual C++ 프로젝트를 사용 하는 경우."마스터"는 MAK 파일을 포함 해야 합니다.RC 파일 프로젝트에는 include'd # 모든 리소스는 응용 프로그램과 함께 컴파일됩니다.

편집할 수 없는 Visual C++ 파일 적용

응용 프로그램 마법사가 만든 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_INVOKEDRC_INVOKED.응용 프로그램 마법사가 만든 파일 구조가 손상 된 경우 Visual C++ 위의 # error 줄을 읽습니다 치명적인 오류를 보고 하 고 읽기 중단에.RC 파일입니다.

여러 Visual에서 C++ 편집할 공유 기호를 관리 합니다.RC 파일

에 여러 리소스를 분할할 때 두 가지 문제가 발생 합니다.Visual C++에서는 별도로 편집할 RC 파일:

  • 문장 부호와 여러 공유 할 수 있습니다.RC 파일입니다.

  • Visual (기호)의 개별 리소스에 동일한 ID 숫자 값을 할당 하지 않도록 C++ 도움말 해야 합니다.

조직을에 다음과 같은 다이어그램을 보여줍니다.RC 및.첫 번째 문제를 다루는 H 파일:

              MYAPP.RC
             /         \
            /           \
MYSTRS.H   / MYSHARED.H  \  MYMENUS.H
     \    /    /      \   \    \
      \  /    /        \   \    \
   MYSTRS.RC           MYMENUS.RC

이 예제에서는 문자열 리소스 MYSTRS 리소스 파일에 유지 됩니다.다른 MYMENUS RC, 및 메뉴에 보관 됩니다.RC입니다.등을 위한 명령, 일부 기호, 두 파일 간에 공유 하 게 할 수 있습니다.예를 들어, ID_TOOLS_SPELL는 맞춤법 도구 메뉴에서 항목에 대 한 메뉴 명령 ID 수 있습니다. 고 문자열 ID 프레임 워크는 응용 프로그램의 주 창 상태 표시줄에 표시 되는 명령 프롬프트를 수도 있습니다.

ID_TOOLS_SPELL 기호 MYSHARED 공유 헤더 파일에 유지 됩니다.H.이 공유 헤더 파일 수동으로 텍스트 편집기로 보관 합니다. Visual C++ 직접 편집 하지 않습니다.두 리소스의 MYSTRS 파일입니다.RC 및 MYMENUS입니다.RC를 지정한 # MYSHARED를 포함 합니다.MYAPP에 있는 읽기 전용 지시문에 H.RC를 사용 하 여 리소스를 포함 앞에서 설명한 대로 명령.

가장 편리한 사용을 시도 하기 전에 공유 합니다 기호를 예상 하는 모든 리소스를 식별 합니다.공유 헤더 파일에 기호를 추가 하 고 아직 없으면 # 공유 헤더 파일에 대 한 읽기 전용 지시문의 include'd에서.RC 파일을 기호를 사용 하기 전에 작업을 수행 합니다.이렇게 하면 심볼을 공유를 예상 하지 못한 경우 수동으로 해야 합니다 (텍스트 편집기를 사용 하 여) 이동 # define 문을 기호, 예를 들어 MYMENUS.MYSHARED에 H입니다.MYSTRS에서 사용 하기 전에 H입니다.RC입니다.

때에 여러 심볼을 관리 합니다.RC 파일을 동일한 ID 숫자 값 (기호)의 개별 리소스에 할당 하지 않도록 NET 데도 해야 합니다.지정 합니다.RC 파일을 Visual C++ 증분 Id 각 네 ID 도메인에 할당합니다.편집 세션 간에 Visual C++에서 각 도메인에 대 한 기호 헤더 파일에 할당 된 마지막 ID를 추적을 합니다.RC 파일입니다.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 명령 id를 사용 하 여 다음 기호 값입니다.명령 기호 값의 유효한 범위에 0x8000 0xDFFF입니다.

_APS_NEXT_CONTROL_VALUE 는 대화 상자 컨트롤에 사용 되는 다음 기호 값입니다.대화 상자 컨트롤 기호 값의 유효한 범위를 8 0xDFFF입니다.

_APS_NEXT_SYMED_VALUE 기호 브라우저에서 새로 만들기 명령을 사용 하 여 기호 값을 수동으로 할당 하는 경우 발생 하는 다음 기호 값입니다.

새 visual C++ 시작 값이 약간 높은 낮은 법적 때 값 만들기RC 파일입니다.또한 응용 프로그램 마법사 MFC 응용 프로그램에 대 한 적절 한 항목으로 이러한 값을 초기화 합니다.ID 값의 범위에 대 한 자세한 내용은 기술 참고 20.

Visual C++과 같은 프로젝트에도 새 리소스 파일을 만들 때마다 정의 이제 _APS_NEXT_ 값입니다.따라서 여러 예를 들어 추가 하는 경우 서로 다른 두에 대화.RC 파일을 것입니다 거의 값 같은 # 정의 하는 다른 대화 상자에 할당 됩니다.예를 들어, 첫 번째에서 IDD_MY_DLG1 합니다.RC 파일 수 있는 할당 동일 번호를 101로 1 초에 IDD_MY_DLG2.RC 파일입니다.

이 문제를 방지 하려면 각 도메인에는 해당 Id의 4에 대 한 별도 숫자 범위를 않는 것이 좋습니다.RC 파일입니다.수동으로 업데이트 하 여이 작업을 수행의 _APS_NEXT 의 각 값은.RC 파일 before 추가 리소스를 시작 합니다.예를 들어, 경우 첫 번째.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++가 많은 첫 번째 Id를 할당 합니다 수 있습니다.숫자 값에 대 한 두 번째 예약 된 중복 되기 시작 RC 파일입니다.RC 파일입니다.이러한 일이 일어나지 않도록 충분히 큰 범위를 예약 해야 합니다.

간의 의존 관계를 관리 합니다.RC입니다.CPP를 하 고 있습니다.H 파일

Visual C++를 때 저장 된.RC 파일을 그도 기호 변경 해당 리소스를 저장합니다.H 파일입니다.중 하나를 합니다.리소스를 참조 하는 CPP 파일을.RC 파일 해야 # 리소스를 포함 합니다.일반적으로 내에서 H 파일에서 프로젝트의 마스터 헤더 파일입니다.이러한 헤더 종속성에 대 한 원본 파일을 검사 하는 개발 환경의 내부 프로젝트 관리 때문에 바람직하지 않은 측면-효과를 발생할 수 있습니다.Visual C++에서 새 심볼을 추가할 때마다 모두는.CPP 파일 # 리소스를 포함 합니다.H 다시 컴파일할 수 있어야 합니다.

Visual C++, 리소스에 대 한 종속성을 피할 수 있습니다.리소스의 첫 번째 줄으로 다음 메모를 포함 하 여 H.H 파일:

//{{NO_DEPENDENCIES}}

개발 환경 리소스 변경 내용을 무시 하 여이 메모를 해석 합니다.따라서 해당 종속 H입니다.CPP 파일 다시 컴파일할 필요가 없습니다.

Visual C++ 항상 추가 //{{NO_DEPENDENCIES}} 줄에 대 한 의견은.RC 파일을 저장 하면 파일입니다.경우에 따라 빌드 종속 리소스의 회피.H 뚫고 링크 시 런타임 오류가 발생할 수 있습니다.예를 들어, 기호 브라우저를 사용 하 여 배정 된 자원에 대 한 기호 숫자 값 변경 하는 경우 리소스 됩니다 수 올바르게 찾을 수 없고 로드 응용 프로그램 런타임 경우에 해당 합니다.리소스를 참조 하는 CPP 파일 컴파일될 수 없습니다.다시 이런 경우 명시적으로 어떤 컴파일해야 합니다.CPP 파일 리소스 기호 변경 영향을 받습니다.H 또는 select 모두 다시 빌드.자주 특정 그룹의 리소스에 대 한 기호 값을 변경할 필요가 있는 경우 보면이 편리 하 고 안전 하 게 분해 별도 읽기 전용 헤더 파일에 이러한 기호를 위의 섹션에서 설명한 대로 경우가 포함 하는 추가 헤더 파일.

Visual C++ 관리 방법 정보 집합 포함 됩니다.

위에서 설명한 것 처럼 세 가지 유형의 정보를 지정 합니다. 파일 메뉴 집합을 포함 하는 명령을 수 있습니다.

  • 기호 헤더 파일

  • 읽기 전용 기호 지시문

  • 컴파일 타임 지시문

다음 Visual C++에서이 정보를 유지 하는 방법에 대해 설명 합니다.는.RC 파일입니다.Visual C++를 사용 하려면이 정보가 필요 하지 않습니다 하지만 더 자신 있게 설정 포함 기능을 사용할 수 있도록 이해도 높일 수 있습니다.

각 집합에 포함 된 정보는 위의 세 가지 종류의 저장 되는.RC 파일을 두 가지: (1)로 # include 또는 다른 지시어 해석할 리소스 컴파일러에 의해, (2) 특수 TEXTINCLUDE 자원이 해석할만 Visual C++로.

TEXTINCLUDE 리소스의 목적은 쉽게 Visual C++에서의 염려 되는 형태로 설정에 포함 되는 정보를 안전 하 게 저장 하는 것 설정 포함 대화 상자.TEXTINCLUDE 되는 리소스 종류 Visual C++에서 정의 합니다.Visual C++ 리소스 id 번호가 1, 2 및 3에 있는 3 개의 특정 TEXTINCLUDE 리소스를 인식 합니다.

TEXTINCLUDE 리소스 ID

정보 설정 포함 됩니다.

1

기호 헤더 파일

2

읽기 전용 기호 지시문

3

컴파일 타임 지시문

각 집합에 포함 되는 정보는 세 가지 종류의 MYAPP 기본적으로 나타낸 것입니다.RC 및 리소스를 제공 합니다.H 파일을 아래에서 설명한 대로 응용 프로그램 마법사에서 생성 합니다.추가 \ 0 및 "" BEGIN 및 END 블록 사이 토큰 필수 RC 구문에서 0 종료 된 문자열 및 큰따옴표 문자를 각각 지정 합니다.

기호 헤더 파일

기호 헤더 파일은 리소스 컴파일러에서 해석 정보 형태로 # include 문을입니다.

#include "resource.h"

해당 TEXTINCLUDE 리소스는 다음과 같습니다.

1 TEXTINCLUDE DISCARDABLE
BEGIN
   #resource.h\0"
END

읽기 전용 기호 지시문

읽기 전용 기호 지시문 MYAPP 상단에 포함 되어 있습니다.다음과 같은 형태로 해석할 리소스 컴파일러에서 RC:

#include "afxres.h"

해당 TEXTINCLUDE 리소스는 다음과 같습니다.

2 TEXTINCLUDE DISCARDABLE
BEGIN
   "#include ""afxres.h""\r\n"
   "\0"
END

컴파일 타임 지시문

컴파일 타임 지시문 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

Visual C++ 컴파일 타임 지시문을 통해 건너뛰려면 APSTUDIO_INVOKED #ifndef 지시문을 지시 합니다.

해당 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

참고 항목

기타 리소스

번호 기술 정보

범주별 기술 노트