창 이름은 Hellow World로 만들것이다.
먼저, 함수 선언과 전역변수, 상수 선언이다.
(선언)
우리는 MFC를 사용하지 않을 것이므로, WIN32_LEAN_AND_MEAN을 define해준다.
윈도우 프로그래밍에서의 시작점은 WinMain 함수이다.
(WinMain)
보면 우리는 CreateMainWindow 함수를 만들어 두어 이 함수로 창을 만들것이고
그 아래에는 메인 메시지 루프가 있다. 메시지 루프는 윈도우 프로그래밍에서 중요한 부분이다.
윈도우 프로그램은 윈도우와의 메시지를 주고 받으면서 동작을 한다. 그렇기에 오고 가는 윈도우 메시지를 확인하는 부분이라고 생각하면 된다.
그렇다면 CreateMainWindow 함수를 보자.
윈도우를 표시하기 전에 Window 클래스를 만들고 등록해야하는데 그 작업을 하는 함수이다.
윈도우의 초기 설정을 하는 클래스가 바로 WNDCLASSEX 구조체이고 이 안의 멤버값들을 채워넣어 윈도우를 설정한다.
(WNDCLASSEX 설정)
설정이 끝나면 클래스를 등록하는 부분이 이어진다.
(클래스 등록)
그 후 창을 생성하는 CreateWindow 함수가 나온다. (각 인자에 대한 설명은 따로 포스팅할 것이다.)
(창 생성)
UpdateWindow를 통해 윈도우 프로시저에게 자기 자신을 그리라고 메시지를 보낸다.
* WinProc 함수
중요한 함수이다.
위에서 윈도우 프로그램은 윈도우와 메시지를 주고 받으면서 동작한다고 했다. 그 메시지를 처리하는데 사용되는 함수이다.
위에서 설정한 WNDCLASSEX 구조체 안에 명시된 이름과 동일해야한다. 여기서는 WinProc
무시하는 메시지들은 윈도우가 알아서 처리한다. 여기서는 윈도우가 종료될 때의 메시지만 작성할 것이다.
(WinProc)
PostQuitMessage(0)을 통해 프로그램이 종료를 요청한다고 윈도우에게 신호를 보내는 것이다.
그러면 메시지큐에 WM_QUIT이 추가되고 WinMain에서 이 메시지를 보게 되면 루프를 빠져나가 프로그램이 종료되게 되는 것이다.
컴파일 해서 프로그램을 실행해본다.
(윈도우 창 생성)
(*참조 - 2D 게임 프로그래밍, 찰스 켈리)
'Programing > Windows' 카테고리의 다른 글
(Windows Programing) 다중 인스턴스 방지 (0) | 2018.01.23 |
---|---|
(Windows Programing) 키보드 입력 및 표시 (0) | 2018.01.19 |
(Windows Programing) #define WIN32_LEAN_AND_MEAN (0) | 2018.01.18 |