메시지 처리기를 클래스에 추가하려면 두 부분이 모두 필요합니다. 메시지 맵은 클래스 내부에서 모든 메시지 핸들러 함수에 대한 선언 (예 : OnSize
)과 함께 선언해야합니다. 실제로 아무것도하지 않고, 항상 규칙에 따라 포함되어 있습니다 -
class CClassWnd : public CBaseClassWnd {
...
afx_msg void OnSize(UINT nType, int cx, int cy);
DECLARE_MESSAGE_MAP
};
afx_msg
그냥 빈 자리 표시 자 매크로입니다.
메시지 맵
다음 클래스의 .cpp 파일에 정의되어
BEGIN_MESSAGE_MAP(CClassWnd, CBaseClassWnd)
ON_WM_SIZE()
END_MESSAGE_MAP()
이러한 매크로 창에서 수신 메시지는 해당 핸들러 함수에 파견 할 수있는 클래스의 조회 테이블을 생성합니다. ON_WM_SIZE
매크로를 사용하면 WM_SIZE
메시지의 wParam
및 lParam
메시지 매개 변수를 메시지 처리기 기능 (이 경우 nType
, cx
및 cy
)에 대해보다 의미있는 값으로 디코딩 할 수 있습니다. MFC는 대부분의 창 메시지 (WM_LBUTTONDOWN
, WM_DESTROY
등)에 대한 매크로를 제공합니다.
MSDN의 MFC here에서 메시지 맵이 작동하는 방식에 대한 자세한 정보를 찾을 수 있습니다.
내가 그것을 잠시 궁금해 한 것을 알기가 좋다. 어쩌면 나는 단지 내 손에 너무 많은 시간을 ....) –