Message Loop

윈도우즈는 메시지 구동 시스템(Message Driven System)이다.
메시지란 사용자나 시스템 내부적인 동작에 의해 발생된 일체의 변화에 대한 정보이다.
순서를 따르지 않고 주어진 메시지에 대한 반응을 정의하는 방식으로 프로그램이 실행된다.

윈도우즈 프로그램에서 메시지를 처리하는 부분을 메시지 루프라고 한다.
메시지 루프는 메시지 큐에서 메시지를 꺼내 메시지 처리 함수로 보낸다.
보통 WinMain 함수의 끝에 다음과 같은 형식으로 존재한다.

while ( GetMessage( &Message, 0, 0, 0 ) ) {
  TranslateMessage( &Message );
  DispatchMessage( &Message );
}

BOOL GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, wMsgFilterMax );

시스템이 유지하는 메시지 큐에서 메시지를 읽어들인다.
읽어들인 메시지는 첫번째 인수가 지정하는 MSG 구조체에 저장된다.
읽어들인 메시지가 프로그램을 종료하라는 WM_QUIT 일 경우 False 를 리턴하고, 그 외의 메시지이면 True 를 리턴한다.
즉 프로그램이 종료될 때까지 전체 while 루프가 계속 실행된다.

BOOL TranslateMessage( CONST MSG *lpMsg );

키보드 입력 메시지를 가공하여 프로그램에서 쉽게 쓸 수 있도록 해준다.

LONG DispatchMessage( CONST MSG *lpMsg );

시스템 메시지 큐에서 꺼낸 메시지를 프로그램의 메시지 처리 함수(WndProc)로 전달한다.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret