MFC공부하는데 궁금한게있어서요
아이뻐
PostMessage()함수는 메시지를 메시지 큐에 축가하고 윈도우 프로시저나 메시지 핸들러가 호출되기 전에 그냥리턴한다.
SendMessage()함수는 메시지를 메시지 큐에 추가하지않고 윈도우 프로시저를 곧바로 호출하고 그 메시지 핸들러가 리턴할 때 까지
기다린다. 라고 쓰여있습니다. 근데 MFC에서
PreTranslateMessage()함수에서 이 둘다쓰이면 PostMessage()는 출력결과가 나오고 SendMessage()는 출력결과가 안나옵니다.
그이유가 제 나름대로 이해한것은 PreTranslateMessage()구문은 메세지큐를 거치지않고호출되는함수이기때문에
SendMessge()는 메세지 큐를 거치지않았으므로 호출이안되는것이다. 하지만
PostMessage()메세지큐를 추가했는데 PreTranslateMessage()함수정의라면 어떻게 나타난것일가요?
그리고 PostMessage()는 화면에 창을나타날때 쓰이기라도하는데 SendMessge()는 용도가 어떤곳에 쓰입니까?
-
곰돌츼
아~ 그럼 PostMessage()는 화면에 그려지는동안은 아무것도 안하지만 SendMessage()가 쓰인 구문은 처리하면서 다른 할일을 하니간 내부적으론 SendMessage()가 쓰이고있다는거죠?
-
두나
이미 말씀하신대로, 응답을 기다려야 하는 곳에 SendMessage()를 쓰죠. 프로그래밍 하다보면.. 반드시 A라는 처리를 한후, 다음일을 해야 할경우가 있잖아요. 그경우에요. PostMessage()는 그냥.. 해달라고 요청만 하는 거에요. 응답을 받지 않죠. 화면에 그리는데 사용한다는건.. 아마도. 화면이 다 그려질때까지.. 기다리면, 프로그램이 다른 처리를 못하고 기다리게 되므로.. 속도도 떨어지고 않좋겠죠..
-
시나브로
아 그럼 PostMessage()는 화면에 나오기라도하느데 SendMessge()이건 안나오는데 어디에 쓰이는용도인가요?
-
뿌우
말씀하신대로, SendMessge() 는 반드시 처리된후, 그다음 작업을 진행하고 싶을때 사용합니다.