Win32_API - 리소스(Resource)

컴퓨터/Win32-API

728x90
반응형

서론

Windows 프로그래밍을 하면 리소스를 많이 다루고 사용하게 됩니다. 이 리소스는 다양한 아이콘 마우스 커서 메뉴 등의 디자인을 손쉽게 할 수 있도록 도와주는 녀석입니다. 본문에서는 리소스에 대하여 알아보고 초기 리소스를 사용하기 위한 준비를 해보도록 하겠습니다.

 

VisualStudio사용을 권장합니다.

리소스를 효율적으로 잘 사용하기 위해서는 VisualStudio를 사용하시면 보다 손쉽게 사용할 수 있습니다.

 

1. 리소스 추가해보기

VisualStudio를 들어가서 프로젝트 디렉터리를 확인하면 그림과 같이 있습니다.

여기서 Resource Files에 '리소스 추가'를 해보도록 합시다.

다양한 종류의 리소스가 보이는데 우선 "Menu"를 선택하여 리소스를 추가해 봅시다.

그러면 프로젝트 디렉터리가 아래와 같이 변경되며

프로젝트 명과 동일한 .rc 파일과 resource.h 파일이 생성됩니다.

그리고 윈도우의 메뉴를 제어할 수 있는 편집기가 나오게 됩니다.

 

2. 헤더 파일 확인하기

Resource.h 파일의 소스코드를 확인하면 다음과 같습니다.

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Win32Test.rc
//
#define IDR_MENU1                       101

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

이 소스코드는 VisualStudio에 의해 자동으로 생성되며, 지금 프로젝트에 추가된 리소스는 메뉴 하나만 있기 때문에 다음과 같이 설정되어 있습니다.

 

3. 메뉴 리소스 편집기 확인하기

그럼 메뉴 리소스 편집기를 확인해 보겠습니다.

프로젝트명.rc를 들어가면 다음과 같이 Resource View에서 편집기를 통해 편집이 가능합니다.

편집기를 이용하여 메뉴를 생성하거나 만들 수 있습니다.

또 해당 메뉴들을 마우스 우클릭을 통해 속성을 들어가 각각의 정보를 만들 수도 있습니다.

4. 다시 헤더 파일 가보기

약간의 수정을 거친후 헤더 파일을 가보면 자동적으로 소스코드가 수정되어있는 것을 알 수 있습니다.

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Win32Test.rc
//
#define IDR_MENU1                       101
#define ID_40001                        40001

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40002
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

 

5. 결론

VisualStudio를 통하면 리소스들의 편집을 용의하게 할 수 있고, 자동적으로 ID를 부여하거나 수정하여 소스코드 내에서 손쉽게 사용할 수 있습니다. 

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :