DispatchMessage(&Message); // GetMessage() 함수로부터 전달된 메시지를 윈도우 프로시저로 보내는 역할 수행.
}
* 용어 정리
용어
설명
시스템 큐
시스템 큐는 운영체제가 가지고 있는 메시지 저장소로서 저장된 이벤트 메시지를 애플리케이션 큐로 넘겨준다.
애플리케이션 큐
애플리케이션 큐는 실행 중인 응용 프로그램마다 하나씩 가지고 있는 메시지 저장소이다.
while( ) 문으로 이루어진 메시지 루프는 GetMessage( ) 함수의 반환이 거짓이 될 때까지 계속 반복해서 돈다.
3. 애플리케이션에 대한 소개(읽어보기)
애플리케이션 큐는 응용프로그램이 소유한 메모리 버퍼라고 생각하면 된다.
우리가 직접 때때로 개발을 하다 보면, 애플리케이션 큐에 직접 메시지를 보내야 하는 경우가 있다.
-> 메시지 전달 함수 API에는 SendMessage()와 PostMessage() 함수가 있음.
* SendMessage() 함수
모든 메시지는 시스템 큐에서 애플리케이션 큐를 거쳐 윈도우 프로시져 함수로 전달된다고 알고 있으나, 이러한 과정을 모두 무시하고 윈도우 프로시저 함수로 바로 전달되는 메시지가 있다(). SendMessage()가 이러한 역할을 수행해준다.
이 함수는 메시지가 완전히 처리되기 전까진 반환되지 않는다. 메시지 처리 후 반드시 처리 확인이 필요한 경우에 이 함수를 사용하도록 한다.
* PostMessage() 함수
PostMessage() 함수를 이용하면 메시지는 시스템 큐를 거치지 않고, 직접 애플리케이션 큐에 보내진다. 이 함수로 메시지를 보내면 곧바로 반환되므로, 해당 메시지를 바로 처리하지 않고도 해당 메시지를 붙인 스레드는 다른 작업을 할 수 있다 즉, 메시지가 비동기적으로 처리 되어도 상관없는 경우에 이 함수를 사용한다.
쉽게 이해하려면, 저 함수의 Send, Post라는 단어로 유추해서 생각해보면 쉬울 것 같다.
마치 우편 수화물하고 같은 원리라고 보면 이해하기 쉬울 것 같다. (이메일의 경우, 보낸 후 수신확인을 통해 상대방이 확인했는지 확인하는 과정과 매우 흡사하다.
4. 메시지 처리하기
메시지 루프를 통해서 윈도우 프로시저로 전달된 메시지는 윈도우 프로시저가 구분하여 작업을 처리하게 된다.