Nagie's DevStory

[WIN32 API] 03. 기본 소스 코드 분석하기 [ 2 ] 본문

Programming/Win32API

[WIN32 API] 03. 기본 소스 코드 분석하기 [ 2 ]

Nagie 2023. 11. 13. 01:01
728x90

이번엔 기본 제공되는 헤더파일을 살펴볼 차례이다.

기본 제공되는 헤더파일은 'framework.h', 'Resource.h', 'targetver.h', 'WindowsProject1.h'가 제공되며

미리 컴파일된 헤더를 옵션으로 선택하게 된다면 'pch.h'와 'pch.cpp'도 같이 제공된다.

 

 

1. framework.h

 

// header.h: 표준 시스템 포함 파일
// 또는 프로젝트 특정 포함 파일이 들어 있는 포함 파일입니다.
//

#pragma once

#include "targetver.h"
#define WIN32_LEAN_AND_MEAN             // 거의 사용되지 않는 내용을 Windows 헤더에서 제외합니다.
// Windows 헤더 파일
#include <windows.h>
// C 런타임 헤더 파일입니다.
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>

 

Win32 API를 사용하기 위해 기본적으로 사용되는 헤더 파일들을 정의해 놓은 형태를 띠고있다.

C 런타임 헤더를 나열한 부분은 C++ 런타임 헤더로 싹 다 교체해도 작동에는 무리가 없으며

다만 조금 특이한 전처리 코드가 있는데

#define WIN32_LEAN_AND_MEAN

 

해당 전처리 코드는 Win32 API 헤더에서 일부 사용되지 않는 내용을 제외하는 역할을 한다.

 

 

2. Resource.h

 

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++에서 생성한 포함 파일입니다.
// 다음에서 사용 WindowsProject1.rc

#define IDS_APP_TITLE			103

#define IDR_MAINFRAME			128
#define IDD_WINDOWSPROJECT1_DIALOG	102
#define IDD_ABOUTBOX			103
#define IDM_ABOUT				104
#define IDM_EXIT				105
#define IDI_WINDOWSPROJECT1			107
#define IDI_SMALL				108
#define IDC_WINDOWSPROJECT1			109
#define IDC_MYICON				2
#ifndef IDC_STATIC
#define IDC_STATIC				-1
#endif
// 다음은 새 개체에 사용할 기본값입니다.
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NO_MFC					130
#define _APS_NEXT_RESOURCE_VALUE	129
#define _APS_NEXT_COMMAND_VALUE		32771
#define _APS_NEXT_CONTROL_VALUE		1000
#define _APS_NEXT_SYMED_VALUE		110
#endif
#endif

 

해당 헤더 파일은 리소스 에디터에서 리소스를 식별하고 조작하는 데 사용할 식별자들을 담고 있으며

각 전처리문은 UI 구성, 아이콘, 메뉴 등과 같은 정적인 리소스를 나타낸다.

 

 

3. targetver.h

 

#pragma once

// // SDKDDKVer.h를 포함하면 최고 수준의 가용성을 가진 Windows 플랫폼이 정의됩니다.
// 이전 Windows 플랫폼용 애플리케이션을 빌드하려는 경우에는 SDKDDKVer.h를 포함하기 전에
// WinSDKVer.h를 포함하고 _WIN32_WINNT를 지원하려는 플랫폼으로 설정합니다.
#include <SDKDDKVer.h>

 

해당 헤더 파일은 소프트웨어 개발 키트와 디바이스 드라이버 키트의 버전 관리 헤더 파일을 포함하는 역할을 한다.

'SDKDDK.h'파일은 '_WIN32_WINNT' 매크로를 설정해 Win32 API의 가용한 기능을 결정하며

다음과 같이 특정 버전의 윈도우즈에서 작동할 수 있게 지정할 수 있다.

 

#include <SDKDDKVer.h>

#define _WIN32_WINNT 0x0601 // Windows 7 이상의 기능을 사용하도록 설정

 

그리고 주의해야 할 점이 하나가 있다.

해당 헤더파일의 끝은 항상 엔터로 한 줄을 비워줘야 하며

그렇지 않으면 컴파일러에서 EOF 에러를 띄우며 컴파일 에러가 발생하게 된다.

 

 

4. WindowsProject1.h

 

#pragma once

#include "resource.h"

 

리소스를 사용하기 위해 'resource.h' 파일을 포함하는 게 끝이다.

 

기본적인 코드 분석은 끝났으니 이제 Win32 API를 본격적으로 공부할 준비가 됐다!

728x90
Comments