메시지 맵( Message Map )
SDK 프로그램에서는 윈도우 시스템에서 들어온 메시지를 switch문을 사용하여 처리하였다. 그러나 MFC에서는 메시지 처리를 위해 message map이라는 mechanism을 사용하고 있다. Message map은 메시지 번호와 메시지가 발생하였을 때 호출되는 함수의 포인터 등의 정보를 갖고 있는 테이블로 프로그램에 전달된 메시지와 메시지 핸들러 함수를 연결하는데 사용한다.
MFC에서 message를 처리하기 위해서는 다음의 세 가지 단계가 필요하다.
1. 윈도우 클래스의 멤버 함수로 메시지 핸들러 함수를 선언한다.
2. message map에 message와 message handler 함수를 묶는 message의 매크로를 추가한다. (.cpp file에 존재한다. )
3. 메시지 핸들러 함수의 기능을 구현한다.
위의 세 단계중에서 1, 2 단계는 Class Wizard로 구현이 되고, 마지막 함수의 기능 구현만 구현하면 된다.
● 메시지 핸들러( Message Handler ) 함수
윈도우로부터 애플리케이션에 메시지가 전달될 때 해당 메시지를 처리하는 멤버 함수이다.함수이름은 WM_를 떼고, 대신 On을 붙여서 시작하고 함수 선언 시에 afx_msg를 붙여 메시지 핸들러 함수라는 것을 나타낸다.
MFC를 처음에 시작하면 많이 만나게 되는 afx_msg에 관한 설명이다.
물론 이해는 잘 안되지만......
대충 보게 되면 어떤 메세지를 위한 구조체가 결정되어있고 그것을 불러다 쓰면 된다는 말이다.
위저드를 통해서 모든것은 가능하기 때문에 어렵지는 않지만 나중에 디버그나 코딩을 수월하게 하려면 이것에 대한 개념을 잡는것이 중요하다 하겠다.
댓글 없음:
댓글 쓰기