본문 바로가기

WndProc

WndProc

메시지 처리 함수란 메시지가 발생할 때 프로그램의 반응을 처리하는 일을 하며 WinMain 함수와는 별도로 WndProc 라는 이름으로 존재한다.
윈도우 프로시저(Window Procedure)라는 뜻이고 통상 "윈드프록" 이라고 읽는다.
WndProc 은 WinMain 에서 호출하는게 아니라 윈도우즈에 의해 호출된다.
메시지가 입력되면 윈도우즈에 의해 WndProc 이 호출되어 메시지를 처리한다.
이렇게 운영체제에 의해 호출되는 응용 프로그램내의 함수를 콜백(CallBack) 함수라고 한다.

WndProc의 인수는 4개이며 MSG 구조체의 멤버 4개와 동일하다.
WndProc의 구조는 대체로 다음과 같은 형태를 가지고, 메시지의 종류에 따라 다중 분기하여 메시지별로 처리를 진행한다.

switch ( iMessage )
{
  case Msg1:
    처리1;
    return 0;
  case Msg2:
    처리2;
    return 0;
  case Msg3:
    처리3;
    return 0;
  default:
    return DefWindowProc(...);
}

DefWindowProc 함수는 WndProc 에서 처리하지 않은 나머지 메시지에 대해 디폴트 처리를 해 준다. WinProc 은 메시지를 처리했을 경우 반드시 0을 리턴해 주어야 한다.