Visual C++ ,MFC 를 사용한 프로그램시 나오는 내용입니다.
ON_COMMAND와 ON_MESSAGE 모두 macro로 코딩을 편하게 하기위해 사용한다고 볼수 있습니다.
차이점은 ON_COMMAND는 command id의 핸들러를 설정하는 함수로
사용법이 ON_COMMAND(id, memberFxn) 입니다.
즉 command id가 실행되면 memberfFxn 멤버 함수를 호출하라는 뜻입니다.
여기서 command id란 버튼의 ID 또는 menu의 ID입니다.
각 메뉴, 버튼에는 자신을 구분하기 위한 ID를 가지고 있고 사용자가 메뉴의 항목을 실행하거나 버튼을 누르면 WM_COMMAND 메세지가 발생하고 이 메세지의 인자중 하나가 선택한 항목의 ID입니다.
MFC 라이브러리는 WM_COMMAND의 인자로 전달된 ID를 ON_COMMAND macro에 설정된 값들과 비교해서 같은 값을 발견하면 그 ID의 멤버함수로 설정된 함수를 호출합니다.
ON_COMMAND가 ID의 멤버함수를 설정하는 것에 반해
ON_MESSAGE는 상용자 정의 메시지의 핸들러(멤버함수)를 설정하는 함수입니다.
WM_ 으로 시작하는 기본윈도우 메시지 이외에 사용자가 메시지를 정의할수 있습니다.
예를 들어 WMU_USERMSG 라고 사용자 정의 메세지를 정의하고
ON_MESSAGE(WMU_USERMSG, OnMyMsg)
이렇게 하면 WMU_MESSAGE가 발생하면 OnMyMsg 멤버함수가 호출됩니다.
다시 간단히 정리하면
ON_COMMAND 는 ID의 handler를
ON_MESSAGE는 사용자 정의 메시지의 handler를 멥핑시키는 macro입니다
'개발지식창고 > MFC' 카테고리의 다른 글
VS2005 -> VS2008 변환시 주의할점 (0) | 2011.07.22 |
---|---|
CCmdUI 클래스 : 사용자 인터페이스 갱신 (0) | 2011.07.19 |
클립보드 사용법2 (0) | 2010.10.27 |
클립보드 사용법 1 (0) | 2010.10.27 |
Picture Control를 이용한 동적인 다이얼로그 연출 (0) | 2010.10.18 |