[Visual C++] 여러 개의 리소스 파일 및 헤더 파일 사용 하기

이번 글에서는 여러개의 리소스 파일과 헤더 파일을 사용하는 방법을 알아보고 이것으로 무엇을 할 수 있는지 알아보겠습니다.

Resource.h 와 .rc파일

리소스는 프로그램 사용자에게 정보를 제공하는 인터페이스 요소입니다. 비트맵, 아이콘, 커서 등등 모두 리소스 말합니다. 이러한 리소스는 리소스 뷰와 편집기를 통해 수정할 수 있으며, Visual C++ 마법사에서 자동으로 생성 및 수정을 해줍니다.

프로젝트 내에서 리소스 파일은 여러 개가 있지만 그중 Resource.h 파일과 .rc 파일은 개발하면서 많이 접하게 되는 리소스 파일 입니다. 예를 들어 비트맵을 추가하면 아래와 같이 Resource.h파일에 리소스에 대한 정의가 입력되고, .rc에 스크립트가 입력됩니다.

.rc2 파일

.rc2 파일도 Visual C++ 마법사에 의해 자동으로 생성되는 파일이지만 위 두 파일과 다르게 리소스 뷰와 편집기로 리소스 추가&삭제 시 자동으로 편집되지 않는 파일입니다.  하지만 .rc에 .rc2파일이 include 되어 있어 최종 컴파일된 .exe 파일에 .rc에 입력된 내용을 포함합니다.

.rc2 파일은 개발자가 Visual C++ 텍스트 편집기로 수정해야합니다.

Visual C++에서 리소스의 Set Include 정보를 관리하는 방법

Visual C++에서는 rc에 set include 명령을 통해 3가지 정보를 TEXTINCLUDE에 저장합니다.

정보 유형리소스 ID
기호 헤더 파일1
읽기 전용 기호 지시문2
컴파일 타임 지시문3

이게 무슨말이냐면.. 위에 설명한 rc2는 컴파일 타임 지시문인 3 TEXTINCLUDE에 입력되어 있습니다.

이게 무슨 말이냐면.. 사용자가 아래와 같이 test.rc2를 만든다면 이후에 리소스 수정 후 저장하면 test.rc가 자동으로 include 되어있습니다.

리소스-전처리기 정의

프로젝트 속성 페이지에서 리소스의 전처리기 정의 기능이 있습니다.

해당 부분에 정의를 하면 .rc 파일에서 전처리를 할 수 있습니다.

리소스에서 Load한 문자열이 깨질 경우

리소스에서 로드한 문자열이 깨질 경우 pragma 전처리기를 사용하면 됩니다.
예를들어 한글이 깨지면 #pragma code_page (949)를 .rc에 입력하면 됩니다.

위에 적힌 내용들을 적절히 잘 조합하면, Version이나 다국어 작업 같은 것들을 할 때 관리가 용이해질 수 있습니다.
예시는 나중에… 글의 내용은 아래 링크들을 참고하였습니다.