본문 바로가기

Programming Tips/MFC

사용자 정의 메시지의 사용법


Dialog간의 통신이나 이벤트 발생시에 많이 사용하게 되는 사용자 정의 메세지 사용법.

1. 메세지를 정의한다.

 - 헤더파일에 다음과 같은 형식으로 정의

   #define  WM_TEST_MESSAGE  WM_USER+10;

2. 메세지를 통해서 호출할 함수의 원형선언 및 구현.

 - 메세지를 받는 쪽 Dialog의 헤더에 함수원형을 선언한다. 
   헤더파일의 아래쪽 // Generated message map functions이라고 주석처리된 부분 밑에
   아래와 같은 형식으로 선언

   afx_msg LRESULT UserMSG(WPARAM wParam, LPARAM lParam);

 - cpp파일에 함수구현.
  
3. MESSAGE MAP에 등록.

 - cpp파일의 메세지 맵에 등록하여 정의된 메세지와 메세지를 통해 호출할 함수를 연결시켜준
   다.

 - cpp파일의 위쪽에 아래와 같은 형식으로 메세지 맵이 있고, 프로젝트 생성시에 자동으로 등
   록된 여러가지 메세지들이 있을 것이다. BEGIN_MESSAGE_MAP과 END_MESSAGE_MAP
   의 사이에 ON_MESSAGE를 이용하여 아래와 같이 등록

 BEGIN_MESSAGE_MAP("메세지를 받는 쪽 Dialog의 클래스명", CDialog)
 //{{AFX_MSG_MAP("메세지를 받는 쪽 Dialog의 클래스명")
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 ON_WM_DESTROY()
 ON_MESSAGE(WM_TEST_MESSAGE, UserMSG)
  //}}AFX_MSG_MAP
END_MESSAGE_MAP()

4. 사용자 정의 메세지 사용.

 - SendMessage 또는 PostMessage함수를 이용하여 사용.
 - 파라미터로 넘길 데이터가 있으면 wParam 또는 lParam을 이용.