좋아요, 여기 당신의 질문에 완전히 답하는 것만으로도 현상금을 얻는 것이 재미있을 것입니다. (그들은 자주 MFC 태그 질문에서 그렇게하지 않습니다 :)). 귀하의 질문 중 어떤 부분이 해결되지 않았다고 생각되는지 나타내주십시오. 이것은 VS 2008의 모든 것입니다. 다른 버전의 변경 사항은 최소화되어야합니다.
다른 빌드 타겟 각각에 대한 리소스 파일을 추가하는 것으로 시작하십시오. "admin.rc", "common.rc"등. 솔루션 브라우저에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 "Add-> New item-> Resource File"을 클릭하십시오.
솔루션 브라우저에서 새로 추가 한 리소스 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택하고 "일반"에서 "빌드에서 제외"를 "예"로 설정하십시오.
리소스보기에서 이제 필요한 리소스를 각 리소스 파일에 추가 할 수 있습니다.
다음으로 리소스보기에서 "기본"리소스 파일()을 마우스 오른쪽 단추로 클릭하고 "리소스 포함"을 선택하십시오. 아래 상자에
, 거기에 무엇이든의 말에, 물론
#ifdef ADMIN
#include "admin.rc"
#endif
에게 자신을 선택할 수있는 전처리에 사용하는 기호 및 파일 이름을 추가 리소스 파일을 더 일찍 만들 때 선택한 내용과 일치해야합니다.
분명히 다양한 빌드에서 사용할 수없는 리소스를 고려해야합니다. 그래서 당신은 예를 들어 생성자에서 대화 IDD를 사용할 대화 상자가 표시되지 않습니다. 전처리기를 통해서도이 작업을 수행 할 수 있습니다. 각각의 구성에서 C++ 전처리기에 동일한 플래그를 추가하기 만하면됩니다.
또 다른 문제는 각각의 .rc 파일에 대해 resource.h가 있으며 각 번호는 고유 한 번호 매기기를 사용한다는 것입니다. 주의 깊게 명명하고 번호 매기기를 통해이 작업을 수행 할 수 있지만 컴파일 시간에 가능한 한 많은 문제를 잡으려고 각각 다른 범위를 할당합니다. 이렇게하려면 "resource1.h"를 열거 나 호출 한 내용을 _APS_NEXT__VALUE 정의를 더 높은 숫자로 변경하십시오.
또는 하나의 resource.h에 모든 리소스 정의를 적용하고 모든 .rc 파일을 편집하여 하나의 resource.h를 포함시킬 수 있습니다. 솔루션 탐색기에서 rc 파일을 마우스 오른쪽 버튼으로 클릭 한 다음 "open with"을 선택하고 "Source code editor"를 클릭하십시오. "복잡한 리소스 빌드"경로를 사용하는 경우 rc 파일의 형식에 익숙해 져야합니다 (기본은 최소한). 어렵지 않습니다. 링커, 리소스 컴파일러, .rc 파일, .cpp 파일 및 resource.h 파일이 서로 어떻게 관련되는지에 대한 정신적 인 그림을 얻으십시오. 게다가, MFC 고유의 전 처리기의 값은, 처음에는 협박 해 버렸지 만, 대부분은 그 자체로 설명 적입니다. 따라서, 대부분의 경우, 무시할 수 있습니다.
Petzold는 자원 파일과 형식에 대한 간결하지만 충분한 설명이 있지만, 물건을 걸러내는 동안 옷장에서 꺼내어 보관할 수 있습니다.
나는 뒤쪽으로 이것을 가지고있다. 더 나은 해결책을 찾고 있었다. 감사. – Ronnie
일단 함수 포인터, 상속 등을 생각하면, 처음에는 두 번째 명령문이 있기 때문에. Methinks 당신은 충분한 세부 사항을주지 않았습니다! :) – Ajay
당신의 솔루션은 런타임입니다. 빌드 시간에 작동하는 솔루션 즉 불필요한 리소스와 코드가 빌드에서 제외됩니다. 내 질문을 편집했습니다. – Ronnie