afx_msg 라는 것이 virtual 대신 붙여 놓았다는 말은 처음 들어보네요.
실제 동작 원리는 virtual 함수와 비슷하긴 하지만 virtual 대신에 afx_msg라는 것을 붙인다는 것은 첨 들어봤습니다.
afx_msg라는 것은(a가 기억이 안나지만 아마 application 이겠지요) framework_msg 의 약자인데요
Window Message와 연결된 함수라는 겁니다.
Window Message의 동작 원리는 선언 부분이 아닌(헤더) 정의 부분인(cpp)에 보시면
BEGIN_MESSAGE_MAP(현 클래스 , 부모 클래스)
END_MESSAGE_MAP
와 같이 정의 되어 있는데 저 디파인 들어가보면 배열이라던가 포인터로 된 멤버들이 디파인 되어 있습니다.
저런식으로 쓰는 이유는 메세지를 던졌을 경우 현 클래스의 BEGIN_MESSAGE_MAP에서 유저가 던지 메세지를 찾다가
없으면 BEGIN_MESSAGE_MAP(현 클래스, 부모 클래스)에서 설정된 부모 클래스의
BEGIN_MEESAGE_MAP에 가서 유저가 던진 메세지를 찾게 되는 원리 입니다. (찾게 되면 그에 맞는 메세지와 연결된
함수를 호출하겠죠)
<출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=763330&ref=763291>