- 음악과 나 -/『 짬 통 』

peekmessage

noon2dy 2006. 5. 18. 00:16
2000-09-05 오전 9:38:00   /  번호: 45374  / 평점:  (-) category: VC++ 일반  /  조회: 1,477 
 PeekMessage 에 대한 질문... hjkim / khjulsan  
hjkim님께 메시지 보내기  hjkim님을 내 주소록에 추가합니다.  hjkim님의 블로그가 없습니다  
Rs-232 Serial 통신을 하는 프로그램을 보면,
보통 쓰레드로 통신포트를 돌리고, 
if(::PeekMessage(&message,NULL,0,0,PM_REMOVE))
{
  ::TranslateMessage(&message);
  ::DispatchMessage(&message);
}
위의 부분이 포트를 읽거나 쓰는 부분에서 나오게 됩니다. 
이 의미가 무었인지요....

그리고, 이 클래스로 핸들러를 넘겨주기만 하고, 어떤 처리도 해주지 않았는데, 
어떻게 동작되는지.. 흑흑

고수분들의 조언좀 바랍니다.
이 글에 평점 주기:  
  2000-09-05 오전 11:34:00   /  번호: 45402  / 평점:  (-)  
  Re: PeekMessage 에 대한 답변...  안재우 / lancers  
안재우님께 메시지 보내기  안재우님을 내 주소록에 추가합니다.  안재우님의 블로그가 없습니다  
PeekMessage는 쓰레드의 메시지 펌핑을 하는 함수입니다.
쓰레드의 메시지 큐에 메시지가 들어왔나를 확인하고..
메시지를 끄집어내는 역할을 합니다.

일반적으로 API로 애플리케이션을 작성할 때...
메시지 펌핑을 하고.. Window Procedure에서 메시지 핸들링를 하죠?
동일한 것입니다.
메인윈도우의 메시지펌프-Window Procedure의 역할을...
쓰레드에서 구현한 것이죠.

그러므로.. 쓰레드에 전달되는 메시지에 따라서 동작되겠죠.
이 글에 평점 주기:  
  2000-09-05 오후 3:02:00   /  번호: 45448  / 평점:  (-)  
 Re: [답변] GetMessage 대 PeekMessage 조형래 / hrzerg  
조형래님께 메시지 보내기  조형래님을 내 주소록에 추가합니다.  조형래님의 블로그가 없습니다  
윈도우즈 에플리케이션은 메시지큐의 메시지를 확인하여 그에 해당하는 메시지
핸들러를 수행하여 작동됩니다. 그래서, 에플리케이션은 메시지 큐에 있는 메시지를
확인하는 일을 계속해야 하져. 이것을 메시지 루프라고 하고여.
메시지 루프는 보통 GetMessage 함수를 이용하져.

while(GetMessage(&message,NULL,0,0))
{
  TranslateMessage(&message);
  DispatchMessage(&message);
}

메시지큐에 메시지가 있을 경우 DispatchMessage(&message)가 윈도우 프러지져에
처리를 요청해서 작동하는 것 같습니다. 님의 질문 내용에 있는 코드도 이와 유사
한데 그 차이가 GetMessage 함수 대신에 PeekMessage를 사용하고 있는데여
이 두함수는 메시지큐에서 메시지를 가져오는 함수라는 공통점이 있어여.

차이점은 메시지 큐가 비었을 때 GetMessage는 대기상태(Sleep)로 들어가 다음 메
시지가 메시지 큐에 들어올 때까지 기다리구여, PeekMessage는 NULL을 리턴하여
더 이상 다음 메시지를 기다리지 않는다는 차이점이 있어여.

메시지 루프의 코드에서 GetMessage 함수를 호출했는데 메시지 큐가 비었을 경우
다음 메시지가 도착할 때까지 리턴되지 않고여, 님의 코드에서는 Peekmessage 함수를
호출했는데 메시지가 없을 경우 NULL을 리턴하므로 if절 내부가 수행이 안 되고 
다음 문장으로 넘어가 버리겠져...

PeekMessage는 인자가 하나 더 있는데여(5번째 인자) 이건 메시지 큐에 메시지가
있을 때 메시지 큐에서 제거할 것인지(PM_REMOVE) 또는 그냥 큐에 놔 둘것인지
(PM_NOREMOVE)를 결정하는 인자입니다.

도움이 되었으면 좋겠네여...
이 글에 평점 주기:  

'- 음악과 나 - > 『 짬 통 』' 카테고리의 다른 글

그냥 c 프로그래머가 알아야할것들  (0) 2006.05.18
비트매니아 대략.  (0) 2006.05.18
때리는 타이밍  (0) 2006.05.18
캐릭터 쩜프  (0) 2006.05.17
시리얼시리얼 소프트  (0) 2006.05.17