WinMain 함수안에 코드를 F10, F11을 사용하여 각각 코드의 큰 흐름을 파악하고 10번 가까이 반복해서 디버깅 해보세요.
헤더 파일
우선 제일 첫행을 보면 windows.h 하나만 인클루드 되어있다.
도스에서는 사용하는 함수에 따라 여러개의 헤더 파일을 포함하지만 윈도우즈에서는 하나의 헤더 파일에 모든 API
함수들의 원형과 사용하는 상수들을 죄다 정의하고 있기 때문에 windos.h만 포함해주면 된다.
windows.h 헤더파일은 기본적인 데이터 타입, 함수 원형등을 정의하며 그 외 필요한 헤더 파일을 포함하고 있다.
그래서 윈도우즈 프로그램의 첫 줄은 거의 항상 include <windows.h>로 시작된다.
시작점
다음으로 dos 프로그램과 차이나는 점은 시작점인 entry point가 main함수가 아니라 WinMain이라는 점이다.
윈도우즈 프로그램의 시작점은 main이 아닌 WinMain이다.
winMain은 4개의 인수를 취하는데 각 인수의 의미는 다음과 같다.
인수 | 의미 |
---|---|
hInstance | 프로그램의 |
인스턴스 핸들 (프로세스 ID) | |
hPrevInstance | 바로 |
앞에 실행된 현재 프로그램의 인스턴스 핸들. 없을 경우는 NULL이 되며 WIN32에서는 항상 NULL이다. 호환성을 위해서만 존재하는 | |
인수이므로 신경쓰지 않아도 된다. | |
lpCmdLine | 명령행으로 |
입력된 프로그램 인수이다. 도스의 argv인수에 해당한다. | |
nCmdShow | 프로그램이 |
실행될 형태이며 최소화, 보통모양 등이 전달된다. |
이중 hInstance 외에는 잘 사용되지 않는다. 인스턴스라는 말은 클래스가 실제 메모리에 구현된 실체를 의마한다.