컴퓨터 공부/MFC 프로그래밍

[5월 21일 1교시] 고급 이벤트 메세지 2

려리군 2009. 5. 21. 10:02

SendMessage와 PostMessage

SendMessage() : 함수호출과 비슷. 실행을 보장.

 - 콜백함수를 직접 호출하고 바로 함수 포인터로 들어간다.

 - 메세지 처리가 끝났을 때 리턴.

 - critical한 메세지 처리

 - WM_COPYDATA는 SendMessage로만 가능.

PostMessage() : 실행을 보장하지 않는다.

 - 메세지 큐에 메세지를 넣는다.

 - 메세지를 push하면 리턴된다.

 - 처리시간이 길면 괜찮다.


실습17

SendMessage()

메세지 박스가 먼저 뜨고 다이얼로그가 닫힌다.

PostMessage()

다이얼로그가 먼저 닫히고 메세지 박스가 뜬다.


사용자 정의 윈도우 메세지

WM_USER(0x0400)~0x7FFF : 사용자 윈도우 클래스의 사용에 대한 정수 메세지

0~WM_USER-1 : 윈도우즈에서 사용하기 위해 예약된 메세지

WM_APP~0xBFFF : 윈도우즈에서 미래 사용을 위해 예약된 메세지

0xC000~0xFFFF : 응용프로그램에서 문자열 메세지를 위해 사용


사용자 정의 메세지 define

#define WM_USER_EXAMPLE WM_USER+?

헤더 파일 설정

afx_msg LONG onUserMessage(WPARAM wParam, LPARAM lParam);

소스파일에서 메세지 맵 설정

ON_MESSAGE(WM_USER_EXAMPLE,OnUserMessage)

※ wParam이나 lParam을 통해 (힙)데이터의 포인터를 날림.