Skip to content
DarkKaiser의 블로그
DarkKaiser의 블로그
  • 개발 관련 자료(노션)
  • Raspberry Pi(노션)
  • WD My Cloud(노션)
  • GitHub
DarkKaiser의 블로그

컴파일 하는 시점에 실행파일 아이콘 변경하기

DarkKaiser, 2008년 9월 6일2023년 9월 6일

간혹 컴파일 하는 시점에 실행 파일의 아이콘을 다른 아이콘으로 변경하고자 하는 경우가 있다.
저 같은 경우는 업체별로 실행파일의 아이콘을 달리하여야 할 경우인데.. 이 때 아래와 같이
해 주면 된다.

우선 VC++ 프로젝트에서 .rc 파일의 ICON 섹션을 보면 아래와 같은 내용이 있다.

Icon with lowest ID value placed first to ensure application icon remains consistent on all systems.

아이콘중에서 가장 낮은 리소스 ID를 가진 아이콘이 실행파일 아이콘으로 된다는 내용인데… 따라서 실행파일의 아이콘을 컴파일 시점에 변경하려면 해당 아이콘의 리소스 ID를 가장 낮게 변경하면 된다. 하지만 이 방법으로 해서 .rc 파일이나 resource.h 파일을 조건부 컴파일 상수를 둬서 해 보았으나, 프로젝트가 저장될 때 수정한 내용이 사라지고 다시 덮어써지는 문제가 있어서 이 방법은 안되었다.

그래서 다시 찾은 방법이… 아래와 같다… 우선 아래의 링크를 참조하자.

http://msdn.microsoft.com/ko-kr/library/6e7446zd(VS.80).aspx

컴파일 타임에 다른 리소스를 포함하는 내용이다. 해당 리소스를 만들고 전처리기를 두면 해결된다.

#ifdef _COMPANY_HI_SEOUL_
#undef IDI_APP_DEFAULT
IDI_APP_DEFAULT         ICON                    "res\\HI_SEOUL.ico"
#endif

#ifdef _COMPANY_DAEDEOK_
#undef IDI_APP_DEFAULT
IDI_APP_DEFAULT         ICON                    "res\\DAEDEOK.ico"
#endif

보시면 IDI_APP_DEFAULT가 가장 낮은 리소스 ID를 가지는데 해당 전처리기에 따라(업체에 따라)서 아이콘 파일을 다시 설정해 주도록 한다.

리소스 파일을 위와 같은 형식으로 만들고 나서 VC++ 프로젝트 속성의 리소스 항목에서 전처리기를 선언하여 주면 된다.

C/C++/VC++

글 내비게이션

Previous post
Next post

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • AssertJ 소개testCompile ‘org.assertj:assertj-core:3.6.2’ 2017년 9월 14일
  • 자주 사용되는 Lombok 어노테이션 2017년 9월 14일
  • 유니코드 #3 2017년 9월 14일
  • 유니코드 #2 2017년 9월 14일
  • 유니코드 #1 2017년 9월 14일

최신 댓글

    카테고리

    • 개인 자료 (1)
      • 일기 (1)
    • 주절주절 (7)
    • 프로그래밍 갤러리 (16)
    • 프로그래밍 언어 (186)
      • Java (29)
      • C/C++/VC++ (114)
      • C# (11)
      • Visual Basic (6)
      • 안드로이드 (9)
      • Objective-C (5)
      • JavaScript (4)
      • JSP/Servlet (2)
      • Python (4)
      • 어셈블러 (1)
    • 개발++ (44)
      • Book (11)
        • Joel On Software (10)
      • 프로젝트 관리 (6)
      • Maven (1)
      • 디버깅 (1)
      • DirectX (1)
      • Silverlight (1)
      • RESTful (1)
      • Hacking (1)
      • WDM (4)
      • VoIP (5)
      • 기타 (1)
    • 개발 도구 (15)
      • eclipse (14)
      • Sublime Text (1)
    • 네트워크 (7)
    • 설치 및 배포 (7)
      • InstallShield (2)
      • NSIS (4)
    • 버전 관리 (9)
      • Git (2)
      • CVS (2)
      • Subversion (5)
    • 데이터베이스 (7)
      • Oracle (3)
      • Sybase (2)
      • MS-SQL (2)
    • 단위테스트 (3)
      • JUnit (1)
      • NUnit (2)
    • 버그추적시스템 (2)
      • mantis (2)
    • 운영체제 (7)
      • Windows (5)
      • 리눅스 (2)
    • WAS (3)
      • WebLogic (3)
    • 디자인패턴 (1)
    • 디지털 이미지 프로세싱 (16)

    태그

    ArrayList ATL BMP CAB CAB 파일 CD-ROM COM DCOM Downcasting for each GetLastError() Java JDT JoelOnSoftware Lokbok netsh NUnit Python StringBuilder Subverion SVN TR1 unicows Upcasting WAVE weak_ptr WebClient Wrap 내장 객체 레이아웃 리소스 리팩토링 마우스 문자 스트림 바이트 스트림 배포 비스타 빌드 서브클래싱 스트림 시스템 에러메시지 오피스파일구별 임시파일 지역클래스 타입 라이브러리

    메타

    • 로그인
    • 엔트리 피드
    • 댓글 피드
    • WordPress.org
    ©2025 DarkKaiser의 블로그 | WordPress Theme by SuperbThemes