2011-03-21 3 views
3

주 응용 프로그램의 외부 리소스 파일에서 아이콘을로드하는 데 문제가 있습니다. 지금 응용 프로그램이 어떻게 설정되는지 설명하겠습니다. 주요 응용 프로그램의 리소스에는 외부 대화 상자 * .rc와 적절한 * .h가 포함됩니다. 링커에는 외부 정적 라이브러리 * .lib에있는 대화 상자 구현 (CDialog/CFormView)이 포함됩니다.MFC 정적 라이브러리 및 외부 rc (리소스) 파일 아이콘로드 문제가

외부 *의 .RC가 있습니다

IDI_MY_ICON ICON "my_icon.ico" 

외부 * .H가 있습니다

HICON MyDialog::GetNeededIcon() 
{ 
    return AfxGetApp()->LoadIcon(IDI_MY_ICON); 
} 

내가 생각 : 정적 lib 디렉토리에

대화 구현 * .CPP가있다

#define IDI_MY_ICON 10000 

외부 * .rc 파일과 동일한 폴더에 있어야합니다. 나는 또한 그것들을 주 앱 폴더에 넣으려고했지만 응용 프로그램은 여전히 ​​그것들을로드하지 않습니다. 누군가 my_icon.ico가 검색되는 위치를 설명 할 수 있습니까?

P. - 파일의 내용은 예제 일뿐입니다.

답변

1

.rc 파일은 실행 파일에 아이콘을 포함시키기 위해 rc.exe에 의해 컴파일됩니다. rc.exe는 포함 경로를 사용하여 리소스를 찾습니다. 이것은 INCLUDE 환경 변수 또는 rc.exe에/I 옵션을 사용하여 지정됩니다. "my_icon.ico"가 작동하지 않으면 파일을 이동하거나 포함 경로를 변경하십시오.

명확한 설명 :

RC.EXE는 .RES에 파일을 .RC 컴파일하지만 실행에 실제 삽입을 수행의 링커.

2

AfxGetApp()->LoadIcon(IDI_MY_ICON);은 현재 응용 프로그램 (exe)에서 아이콘을로드하려고 시도합니다.

다른 모듈에서로드하려면 LoadLibrary에서 반환 된 핸들을 기억하거나 GetModuleHandle을 호출하여 다시 검색해야합니다.

관련 문제