본문 바로가기
WinAPI 32

01 WinAPI) 기본(1)

by Dev_Hugh 2023. 11. 6.
728x90
반응형
더보기

windows 11에서 vs 2022 환경에서 진행하고 있으며 visual studio의 windows sdk 버전은 10.0 이상이다.

vs 2022에서 [새 프로젝트] -> [언어 C++]로 하고 검색창에 [windows 데스크톱 애플리케이션] 검색하여 프로젝트 생성

리소스 폴더의 .cpp 파일을 보면 WinMain() 함수가 있다. 모든 엔트리포인트는 항상 Main이다. WinMain은 Win32에서 지원하는 Main 함수의 형태다.

WinMain 함수

앞에 APIENTRY를 클릭하고 F12를 누르면 다음과 같이 WINAPI를 define 해놨는데, __stdcall과 __cdecl은 함수 호출 규약을 의미한다. (함수 호출 규약에 대해 자세한 내용 살펴 보러가기)

APIENTRY define 확인 하기

WinMain함수의 인자를 HInstance가 있는데 Handle 객체로 운영체제가실행되는 프로그램 마다 관리하기 위해 운영체제가 식별할 수 있게 부여하는 식별 번호다. 따라서 이는 커널 영역으로 우리가 건드는게 아니다.

 

ex) .exe의 경우 기계어로 변환된 코드가 들어가는데 이게 메모리 코드 영역에 올라가는데 CPU가 이 코드영역의 코드를 동작시킨다. 이처럼 프로세서 상태가 됐을 때 운영체제가 이 프로그램을 구분하기 위해 부여하는 식별 번호

 

Main함수 내 LoadStringW의 szTitle은 WCHAR 타입으로 16bit 즉 2byte를 지원한다. 그러므로 영문과 숫자는 전부 1byte를 차지하고 그 외는 2byte를 차지한다. 따라서 모든 언어 지원이 가능한 WCHAR 타입이다.

Main 함수 내 LoadStringW
szTitle 인자의 type
WCHAR은 2 byte 지원


맨날 게임 개발할 때 Unity랑 Unreal 같은 엔진을 이용해 개발하다가 조금 더 날것으로 들어오니 코딩하는 재미가 쏠쏠하다!!! 사실 학교에서도 GPU 프로그래밍이랑 그래픽스 수업이 제일 재밌었닼ㅋㅋ

728x90
반응형

'WinAPI 32' 카테고리의 다른 글

06 WinAPI) Singleton  (0) 2023.11.12
05 WinAPI) PeekMessage  (0) 2023.11.11
04 WinAPI) 핸들과 DC(2)  (0) 2023.11.10
03 WinAPI) 핸들과 DC(1)  (0) 2023.11.09
02 WinAPI) 기본(2)  (0) 2023.11.07