2010년 4월 27일 화요일

afx_msg 설명

메시지 맵( 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에 관한 설명이다.
물론 이해는 잘 안되지만......
대충 보게 되면 어떤 메세지를 위한 구조체가 결정되어있고 그것을 불러다 쓰면 된다는 말이다.
위저드를 통해서 모든것은 가능하기 때문에 어렵지는 않지만 나중에 디버그나 코딩을 수월하게 하려면 이것에 대한 개념을 잡는것이 중요하다 하겠다. 

댓글 없음:

댓글 쓰기