프로그래밍/예전글

GetMessage함수와 PeekMessage함수 그리고 데드타임

Cat체셔 2010. 4. 1. 21:13

BOOL GetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin,
                                UINT wMsgFilterMax);
리턴값 - false면 윈도우 종료

BOOL PeekMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin,
                                UINT wMsgFilterMax,UINT wRemoveMsg);
리턴값 - 메시지를 가져오면 true, 가져오지 못하면 false

LPMSG lpMsg
 - 메세지 구조체의 포인터
HWND hWnd
 - 메세지 큐를 확인할 윈도우의 핸들
UINT wMsgFilterMin
 - 최소값을 넘겨주면 최소값보다 작은 메세지는 가져오지 않는다. (보통 0)
UINT wMsgFilterMax
 - 최대값을 넘겨주면 최대값보다 큰 메세지는 가져오지 않는다. (보통 0)
UINT wRemoveMsg
 - 플래그 값



차이점 - GetMessage함수는 메시지 큐에서 메시지를 받아올 때까지 계속 기다린다.
           하지만 PeekMessage함수는 메시지큐에 메시지가 없어도 기다리지 않고 false를 리턴한다.


활   용 - 메시지 큐에 메시지가 없을 때, 데드타임이 발생하는데
         GetMessage를 사용한다면 데드타임을 활용할 수 없다.
         하지만 PeekMessage를 사용할 경우 이 데드타임을 활용할 수 있다.

데드타임 - 이 때는 주로 프레임을 그려주거나 프레임을 업데이트 시켜주는 일을 시킨다.