'큐'에 해당되는 글 1건
- 2008.08.11 GetMessage() 와 PeekMessage() 1
2008. 8. 11. 15:18
GetMessage() 와 PeekMessage()
2008. 8. 11. 15:18 in Programmings/Windows Programming
Windows API 프로그래밍에서 GetMessage() 와 PeekMessage() 는 메시지 루프에서 사용되는 API이다. 둘다 메시지 큐에서 메시지를 가져오는 역할을 하는데.. 두 API에 약간의 차이는 있다.
BOOL GetMessage ( LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax)
GetMessage() 는 메시지 루프... 스레드 메시지 큐에서 메시지를 읽은 후 읽은 메시지를 큐에서 제거한다.
BOOL PeekMessage ( LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax,
UINT wRemoveMsg)
PeekMessage() 는 GetMessage() 와 마찬가지로 메시지 큐에서 메시지를 읽는 다 메시지의 범위를 줄 수 있는 기능도 GetMessage() 와 동일하다. 하지만, PeekMessage() 는 GetMessage() 와는 달리 읽은 메시지를 무조건 저거하지 않으며 큐가 비어있을 경우 대기하지 않고 바로 리턴한다는 점이 다르다. 따라서 이 함수는 메시지를 읽지 않고 단순히 메시지가 있는지 확인만 할 수 있으며, 이런 특성은 백그라운드 작업에 적절하다.
PeekMessage() 의 마지막 인자를 PM_NOREMOVE로 지정을 하면 큐에서 메시지를 없애지 않고 내용을 볼 수 있다. PM_REMOVE로 지정을 하면 GetMessage() 처럼 큐에서 메시지를 없앤다.
간단히 말해 GetMessage() 함수는 큐에 메시지를 받을 때 까지 복귀하지 않고 루프를 돌면서 대기하는 상태이지만, PeekMessage() 함수는 큐에 메시지가 없는 경우에도 즉석에서 제어를 돌려주고, 다른 일을 할 수 있다는 것이다.
출처 : http://winapi.co.kr
'Programmings > Windows Programming' 카테고리의 다른 글
GetCurrentDirectory()를 이용한 Windows에서 현재경로 받아오기.. (1) | 2008.08.20 |
---|---|
Windows 프로그램을 시작 프로그램으로 등록하기 (0) | 2008.08.19 |
Windows Device Driver 관련 용어들.. (0) | 2008.07.31 |
MSDN 키보드 입력 작동 방식 스크랩 (0) | 2008.07.28 |
키보드 키의 상태값을 알아오기 (0) | 2008.07.24 |