게임학원, 게임프로그래머 취업 전문 교육기관 DirectX11/12 자체엔진 게임개발과정,서버프로그래밍,자료구조,알고리즘,유니티,언리얼 게임학원, 언리얼학원 Win32 API 기본 생성에 대한 코드 분석 01
본문 바로가기

Win32 API 기본 생성에 대한 코드 분석 01

Win32 프로젝트를 Windows 응용 프로그램으로 생성하면 나오는 코드부터 차근차근 보기로 합시다. 이번글은 진입점에 대해 설명합니다.


int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,

                     _In_opt_ HINSTANCE hPrevInstance,

                     _In_ LPTSTR    lpCmdLine,

                     _In_ int       nCmdShow)


모든 코드는 main이 진입점이고 Win32 프로젝트도 마찬가지로 _tWinMain이라는 메인 함수부터 진입 하게 됩니다.


#define APIENTRY    WINAPI

#define WINAPI      __stdcall


결국 APIENTRY는 __stdcall 이라는 것을 알수 있습니다.


함수호출 규약의 방법으로 Win32 API에서 사용 되는 방식이고 피호출자가 스택을 정리합니다. 가변인자가 없기 때문에 피호출자가 스택을 정리하는 것이 더욱 효율적입니다.


#define _tWinMain   wWinMain


WinMain과 wWinMain의 기능은 동일하고 명령 줄 인수의 차이다

ANSI인가 유니코드인가


가변인자가 없기 때문에 GetCommandLine을 통하여 값을 받아오는 방법으로 처리할수 있습니다. (이부분은 CommandLine 클레스 설계 부분에서 설명 합니다.

네이버블로그에 정리해놨는데 http://blog.naver.com/assortrockp/220671329654

티스토리에는 아직 작성이 안 되어있네요 배치파일을 통한 작업에 대해서 설명할 때 포스팅했습니다.)


인자에 대해 msdn을 인용하자면

The four parameters are:


hInstance is something called a "handle to an instance" or "handle to a module." The operating system uses this value to identify the executable (EXE) when it is loaded in memory. The instance handle is needed for certain Windows functions — for example, to load icons or bitmaps.

"이 인스턴스로 처리"또는 "모듈로 처리 할 수 있습니다."

운영 체제가 메모리에 로딩되는 실행 파일 (EXE)를 식별하기 위해이 값을 사용한다. 인스턴스 핸들 특정 윈도우 함수에 필요한 - 예를 들어, 아이콘 또는 비트 맵을로드.


hPrevInstance has no meaning. It was used in 16-bit Windows, but is now always zero.

아무런 의미가 없다. 그것은 16 비트 Windows에서 사용되었지만 지금은 항상 0입니다.


lpCmdLine contains the command-line arguments as a Unicode string.

유니 코드 문자열로 명령 줄 인수를 포함


nCmdShow is a flag that says whether the main application window will be minimized, maximized, or shown normally.

메인 프로그램 창을 최소화 최대화, 또는 일반적으로 표시할지 여부를 말하는 플래그





게임 프로그래머 전문 취업 프로그래밍 학원 어소트락 평생교육원