본문 바로가기
정상을향해/OS·Kernel Driver·Rootkit

윈도우 프로그램의 기본 구조

by 사이테일 2013. 11. 10.

출처 : API Programming / 이창현 저 - 혜지원

 


윈도우 프로그램은 기본적으로 WinMain 함수와 WndProc 함수로 구성된다.

이 두 함수는 없어서는 안 될 필수 함수이다.

WndProc함수는 이름이 정해져 있는 것이 아니며 사용자 임의대로 바꿀 수 있다.

 

WinMain( )

{

윈도우 클래스 만들기

윈도우 객체 생성하기

윈도우 객체 화면에 띄우기

메시지 루프 돌리기

}

 

WndProc( )

{

전달된 메시지 처리하기

}

 

 

WinMain 함수는 프로그램의 윈도우 자체를 생성만 하고, 실제 일어나는 윈도우 메시지는 메시지 처리 함수인 WndProc이 처리한다고 생각하면 된다.

 

다음은 WinMain 함수가 순차적으로 하는 일이다.

 

윈도우 클래스를 만든다 ( RegisterClass( ) )

윈도우 객체를 생성한다 ( CreateWindow( ) )

윈도우를 화면에 보여준다 ( ShowWindow( ) )

입력장치(키보드, 마우스 등)로부터 입력신호를 받는다 (메시지 루프) ( GetMessage )

 

 

클래스 생성 및 등록 후 CreateWindow 함수를 통해서 객체를 생성한다.

그리고 메시지 루프를 돌며 입력 신호를 기다린다.

 

다음은 메시지 처리 함수인 WndProc의 일이다.

 

메시지 루프

메시지 루프로부터 잔달받은 윈도우 메시지를 처리한다 ( WndProc( ) )

 

메시지 루프에서 입력 신호를 받으면, 입력된 메시지 처리는 메시지 처리 함수인 WndProc함수에서 처리한다.

 

 

간단히 정리하면,

WinMain 함수에서는 윈도우를 생성한 후, 메시지 루프를 통해 들어오는 윈도우 메시지를 감시한다.

윈도우 메시지가 들어오면 윈도우 프로시져로 윈도우 메시지를 보내고,

모든 윈도우 메시지는 윈도우 프로시져 내에서 처리된다.