관리 메뉴

드럼치는 프로그래머

[API/MFC] sendmessage 와 postmessage 의 차이점 본문

★─Programing/☆─API | MFC

[API/MFC] sendmessage 와 postmessage 의 차이점

드럼치는한동이 2011. 11. 1. 17:03

먼저 원형을 봅시다.

postmessage의 원형

LRESULT PostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);

sendmessage 의 원형

LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);

 

보시다시피 인자값(파라미터)은 같습니다.

 

차이점은 뭘까요.

 PostMessage() 함수는 hWnd 윈도우의 메세지 큐에 바로리턴하므로 메시지를 붙인 후 즉시 다른작업을 할 수 있지만

큐에 대기하고 있는 다른 메세지가 있으면 뒤에 붙인 메세지는 곧바로 처리되지않습니다.

그래서,지금당장처리해야할 필요가 없을때는  PostMessage() 를 씁니다.

왜냐하면 언제 처리될지 정확하게 예측하기 힘들기 때문입니다.

 

SendMessage()함수는 메시지 큐에 메세지를 추가하지않고 관련된 메시지 핸들러 함수를 직접호출하고

결과를 반환하는 함수입니다.

 

대부분은 SendMessage()를 이용합니다.효율적이기 때문입니다.

그러나 SendMessage()는 종료시점에서 잘못사용하게되면 에러메시지를 뿜고 끝날수있기때문에 조심해야합니다.

 

결론은.

PostMessage() 함수는 메시지 큐에 메세지를 추가하는 함수이며 급하지 않은 일을 처리할 떄 사용하는 함수이고.

SendMessage()함수는 메시지 큐를 거치지 않고,메시지 핸들러 함수를 호출하여 곧바로 처리해야 할 일이 있을 때 사용하는함수입니다.


Comments