Nagie's DevStory
[WIN32 API] 03. 기본 소스 코드 분석하기 [ 2 ] 본문
이번엔 기본 제공되는 헤더파일을 살펴볼 차례이다.
기본 제공되는 헤더파일은 '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를 본격적으로 공부할 준비가 됐다!