GetMessage
GetMessage함수는 스레드 메시지 큐에서 메시지를 가져오는데 메시지가 없으면 새로운 메시지가 전달될 때까지 리턴하지 않는다. 즉 메시지가 들어올 때까지 무한 대기한다. 그래서 윈도우즈 프로그램은 사용자가 키보드를 두드리고 있거나 마우스를 굴리고 있지 않는 경우 대부분 GetMessage에서 다음 메시지를 기다리고 있다. 이 노는 시간에 다른 프로세스가 CPU를 쓸 수 있도록 양보하는데 GetMessage의 이런 특성 때문에 멀티 태스킹이 부드럽게 이루어지는 것이다.
PeekMessage
GetMessage에서 놀고 있는 시간을 데드 타임(Dead time)이라고 하는데 이 데드 타임을 활용할 수 있는 방법이 PeekMessage방식이다. PeekMessage()함수는 메시지가 있는 경우는 TRUE를 반환하고 메시지 큐에 메시지가 없는 경우는 FALSE를 반환한다. FALSE를 반환 할 때 else문에서 데드타임을 활용한 코드를 이용할 수 있다. 게임개발을 위해선 PeekMessage()함수가 매우 유용하다. 주의할 점은 PeekMessage는 탈출구가 없기 때문에 반드시 WM_QUIT 메시지를 받으면 메시지 루프를 탈출할 수 있도록 코드를 넣어줘야 한다.