GetMessage 는 대기 시간 동안 아무 것도 하지 않는다. 따라서 실시간의 반응이 중요한 경우 PeekMessage함수를 사용한다.
PeekMessage는 계속 메시지 큐에 메시지가 있는지 확인하도록 한다.
BOOL WINAPI PeekMessage(
_Out_ LPMSG lpMsg,
_In_opt_ HWND hWnd,
_In_ UINT wMsgFilterMin,
_In_ UINT wMsgFilterMax,
_In_ UINT wRemoveMsg
);
PM_NOREMOVE
PeekMessage가 처리한 후 메시지를 큐에서 제거하지 않는다.
PM_REMOVE
처리한 후 큐에서 제거한다.
PM_NOYIELD
위의 두 옵션과 조합해 사용한다. 다른 스레드에게 제어를 양보하지 않는다. 입력 대기등의 상황도 허용하지 않는다.
기본으로 모든 메시지가 처리되므로 종료라도 하고 싶다면 필터를 설정하자. 만일 그렇지 않으면 넌 모든 제어를 잃게 되겠지.