반응형
MFC에서 각 윈도우 핸들간 메시지를 전달하는 방법으로 SendMessage와 PostMessage가 있다.
이 둘은 비슷하면서도 차이가 있다.
가장 많이 쓰는 곳이 쓰레드에서 UI 접근할때가 아닌가 싶다.
이 둘의 차이점을 가장 쉽게 표현하자면 비동기화와 동기화 차이라고 할 수 있다.
SendMessage
함수 원형
LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
동작
SendMessage를 호출하게 되면 해당 윈도우의 메시지프로시져가 즉각 호출되어 해당 메시지의 처리가 끝날때까지 리턴하지 않는다.
즉, 동기화가 된다.
활용
해당 메시지 처리 작업이 길지 않은 곳에 사용하면 될것 같다. 간단한 UI 업데이트 등..
PostMessage
함수 원형
BOOL PostMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
동작
PostMessage를 호출하게 되면 해당 윈도우의 메시지 큐에 추가된다.
메시지 큐(Queue)에 호출 메시지만 삽입하고 바로 블럭을 빠져나온다.(즉시 리턴)
이는 곧, 메시지 처리 결과와 상관없이 다음 코드를 진입한다는 뜻이다. (비동기)
활용
메시지 처리작업이 오래걸리거나 처리결과가 중요하지 않는 경우에 사용될거 같다.
'Programming' 카테고리의 다른 글
Visual Studio 영문 간격이 이상할때 (0) | 2021.07.19 |
---|---|
Visual Assist 자주 쓰는 단축키 정리 (0) | 2021.07.19 |
영문 윈도우에서 VisualStudio 한글이 깨질때 해결방법 (0) | 2019.12.17 |
[C++] LNK2019 _GetAdaptersInfo@8 Error 관련 (0) | 2019.12.12 |
[C++] 유니코드환경에서 달라지는 주요 함수 (0) | 2019.11.05 |