메시지 보내기 및 받기
프로세스의 전송 부분과 프레임워크가 응답하는 방식을 고려합니다.
대부분의 메시지는 프로그램과의 사용자 상호 작용에서 발생합니다. 명령은 메뉴 항목 또는 도구 모음 단추에서 마우스 클릭 또는 액셀러레이터 키 입력에 의해 생성됩니다. 또한 사용자는 창 이동 또는 크기 조정 등 Windows 메시지를 생성합니다. 다른 Windows 메시지는 프로그램 시작 또는 종료와 같은 이벤트가 발생할 때 Windows에서 포커스를 얻거나 잃어버리는 등의 경우에 전송됩니다. 컨트롤 알림 메시지는 마우스 클릭 또는 컨트롤과의 다른 사용자 상호 작용(예: 대화 상자의 단추 또는 목록 상자 컨트롤)에 의해 생성됩니다.
클래스 CWinApp
의 멤버 함수는 Run
메시지를 검색하고 적절한 창으로 디스패치합니다. 대부분의 명령 메시지는 애플리케이션의 기본 프레임 창으로 전송됩니다. 클래스 라이브러리에서 미리 정의된 메시지는 WindowProc
수신된 메시지 범주에 따라 메시지를 가져오고 다르게 라우팅합니다.
이제 프로세스의 수신 부분을 고려합니다.
메시지의 초기 수신자는 창 개체여야 합니다. Windows 메시지는 일반적으로 해당 창 개체에 의해 직접 처리됩니다. 일반적으로 애플리케이션의 기본 프레임 창에서 시작되는 명령 메시지는 명령 라우팅에 설명된 명령 대상 체인으로 라우팅됩니다.
메시지 또는 명령을 수신할 수 있는 각 개체에는 메시지 또는 명령을 처리기의 이름과 페어링하는 고유한 메시지 맵이 있습니다.
명령 대상 개체가 메시지 또는 명령을 받으면 메시지 맵에서 일치하는 항목을 검색합니다. 메시지에 대한 처리기를 찾으면 처리기를 호출합니다. 메시지 맵을 검색하는 방법에 대한 자세한 내용은 프레임워크에서 메시지 지도 검색하는 방법을 참조하세요. 프레임워크의 그림 명령을 다시 참조하세요.