윈도에 메시지를 보낼때 보통 PostMessage 또는 SendMessage를 사용합니다. 다 아는 얘기지만 PostMessage는 메시지를 보내고 그 결과를 기다리지 않는 비동기적 성격을 갖고 있으며 SendMessage는 메시지를 보내고 결과가 올때까지 기다리는 동기적 성격을 갖고 있습니다.
따라서 PostMessage는 결과에 상관없이 즉시 리턴하기 때문에 다음 명령을 바로 실행 할 수 있는 장점이 있는 반면 처리 결과를 알기가 불편하고 SendMessage는 메시지 처리결과를 알 수 있지만 처리하는 동안 기다려야 하는 불편함이 있습니다.
그렇다면 여러개의 윈도에 동시에 메시지를 보내놓고 먼저 처리대는 대로 그 결과를 받고 싶은 경우는 어떻게 해야 할까요?
이경우 PostMessage와 SendMessage의 장점만 골라서 필요한 경우라고 할 수 있는데요. 이때 사용할 만한 API가 SendMessageCallback입니다. 비동기적으로 동작하고 그 결과는 Callback함수로 받을 수 있죠...
아래 SendMessageCallback을 사용하는 동영상을 보면 이해할 수 있습니다.
TestDlg1은 메시지를 받으면 10초간 대기하고 결과를 리턴하며, TestDlg2는 5초간 대기하고 결과를 리턴하는 프로그램입니다. 테스트를 시작하는 프로그램은 TestDlg1, TestDlg2에 순서대로 메시지를 보냅니다.
만일 SendMessage를 사용한다면 총 15초(TestDlg1의 10초 + TestDlg2의 5초)를 기다려야 모든 일이 끝나지만 SendMessageCallback을 사용하는 경우는 TestDlg1의 10초만 기다리면 됩니다. 10초안에 TestDlg2의 결과를 리턴받을 테니까요...
'C & C++ > MFC Network' 카테고리의 다른 글
Window socket 오류 코드 값(펌) (0) | 2014.07.08 |
---|---|
시리얼 통신 필수 함수(HexToInteger, HexToFloat, HexToDouble) (0) | 2013.11.14 |
간단한 FTP 프로그램 (0) | 2013.11.14 |
포털 사이트 및 웹페이지 자동 로그인 프로그램 (0) | 2013.11.14 |
[Windows IPC] 프로세스간 통신 (0) | 2013.11.14 |
댓글