반응형
afx_msg는 MFC에서 메소드(이벤트 핸들러)를 오버라이딩 할 때 앞에 자동적으로 적히게 됩니다.
afx_msg는 다음과 같이 정의되어 있습니다.
#define afx_msg
결론적으로 afx_msg는 아무 의미가 없는 정의입니다.
afx_msg는 보통 virtual의 의미를 담고 사용합니다.
virtual에 대한 내용은 아래의 링크를 통해서 확인할 수 있습니다.
2014/12/03 - [Programming/C&C++] - 다형성과 가상함수
부모클래스에서 virtual로 선언한 이후에 자식클래스가 구현할 수 있게 해주는 것입니다.
부모만 virtual 선언하면 자식은 굳이 virtual을 선언하지 않아도 됩니다.
그런데도 afx_msg를 사용하는 이유가 있습니다.
부모클래스의 메소드(함수) 중에는 virtual이 선언이 안되어 있는 메소드도 존재합니다.
그럼 virtual을 붙이면 안되기 때문에 그럴 때 afx_msg를 사용합니다.
MESSAGE_MAP(C++ 소스에 BEGIN_MESSAGE_MAP 부분)에서 오버라이드 된 메소드를 메시지에 연결합니다.
이 두가지를 충족시키기 위해서 afx_msg를 사용합니다.
아무 의미가 없기 때문에 안써도 무방하지만 아무래도 써 있는 게 더 파악하기가 수월합니다.
추가적으로 C++11에서는 override라는 키워드를 통해서 명시적으로 override 됐다는 것을 표현할 수 있습니다.
2014/12/21 - [Programming/C++11&14] - [C++11] final과 override
반응형
'Programming > Win32&MFC&COM' 카테고리의 다른 글
CRect의 DeflateRect() 메소드 (0) | 2015.06.01 |
---|---|
메모리DC를 이용한 더블버퍼링으로 그리기 (0) | 2015.05.31 |
MFC, API 프로그래밍에서 유니코드 처리하기 (0) | 2015.01.21 |
Windows 메시지의 구조와 처리 (0) | 2015.01.20 |
MFC 클래스 계층도(hierarchy chart) (0) | 2015.01.06 |