Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- mfc 실습
- win32
- 유료강좌
- 충무창업큐브
- MFC
- 별찍기 기초
- MFC 예제
- do it c
- linux
- 포트폴리오
- ListBox
- tips강좌
- 김성엽
- 핵심 요약
- Tipsware
- MyTread
- mysql
- 실습
- SSG
- 정처기 독학
- C언어
- 미가공
- 도움말
- Time
- 별찍기
- 마이크로소프트
- C
- MyThread
- 정보처리기사
- C++
Archives
- Today
- Total
History
[MFC] SendMessage와 PostMessage의 각 특징 본문
728x90
반응형
SendMessage
BOOL SendMessage(
[in, optional] HWND hWnd, // 메시지를 받을 윈도우 핸들
[in] UINT Msg, // 전달할 메시지
[in] WPARAM wParam,
[in] LPARAM lParam
);
-동작 순서
- 메시지를 메시지 큐에 넣는 것이 아니라 곧바로 윈도우 프로시저(WinProc)로 보내 즉각 처리하도록 한다.
- 메시지가 완전이 처리되기 전에 리턴하지 않는다.(블록 시킨다.)
-장점
- 보낸 메시지의 정확한 처리
-단점
- 보낸 메시지가 완전히 처리될 때까지 기다리므로, 메시지를 보낸 쪽은 블록 상태에 머물게 된다.
- 잘못하면 프로그램이 계속 멈춰있는 상태로 머물 수 있다.
*멀티 스레드 사용할 시 SendMessage는 사용에 위험이 있다.
-활용
- 부모 윈도우와 자식 컨트롤 간의 통신
- 윈도우간 정확한 데이터 전송 및 처리를 위한 통신
- 윈도우의 특정 메시지는 SendMessage만을 사용해야 하는 경우가 있다.(WM_COPYDATA)
PostMessage
BOOL PostMessageW(
[in, optional] HWND hWnd, // 메시지를 받을 윈도우 핸들
[in] UINT Msg, // 전달할 메시지
[in] WPARAM wParam,
[in] LPARAM lParam
);
-동작 순서
1. PostMessage는 Msg 인수로 지정된 메시지를 hWnd 윈도우의 메시지 큐에 넣는다.
2. 메시지를 받은 윈도우는 윈도우 프로시저(WinProc)에서 이 메시지를 처리한다.
3. 메시지를 메시지 큐에 넣고 바로 리턴한다.
-리턴 값
- 함수가 성공하면 반환 값이 0이 아니다.
-장점
- 메시지를 메시지 큐에 넣기만 하고 바로 리턴하기 때문에 "블록(block)" 시키지 않는다. 따라서 바로 다른 적업을 할 수 있다.
-단점
- 메시지를 메시지 큐에 넣고 리턴하기 때문에 큐에 대기하고 있던 다른 메시지가 있으면 해당 메시지가 바로 처리되지 않을 수 도 있다.
-활용
- 급하게 처리할 필요가 없는 메시지- 지금 하고 있는 작업을 완전히 끝내야만 처리할 수 있는 메시지
728x90
반응형
'MFC > 개념 정리' 카테고리의 다른 글
[MFC]UpdataData() 함수에 대하여 (0) | 2023.09.24 |
---|---|
[MFC] Edit컨트롤에서 tab키랑 Enter키 입력받는 방법 (0) | 2023.02.22 |
[MFC] WM_CTLCOLOR에서 Static, Edit 배경 설정 (0) | 2023.02.01 |
[MFC] CToolTipCtrl 사용법 (0) | 2023.01.02 |
[MFC] MAKELPARAM에 대해 (0) | 2022.12.31 |
Comments