다음을 통해 공유


업데이트 처리기가 호출되는 시점

사용자가 파일 메뉴에서 마우스를 클릭하여 WM_INITMENUPOPUP 메시지를 생성한다고 가정합니다. 프레임워크의 업데이트 메커니즘은 메뉴가 삭제되기 전에 파일 메뉴의 모든 항목을 전체적으로 업데이트하여 사용자가 볼 수 있도록 합니다.

이를 위해 프레임워크는 표준 명령 라우팅을 따라 팝업 메뉴의 모든 메뉴 항목에 대한 업데이트 명령을 라우팅합니다. 라우팅의 명령 대상은 업데이트 명령을 적절한 메시지 맵 항목(양식 ON_UPDATE_COMMAND_UI)과 일치시키고 "업데이트 처리기" 함수를 호출하여 메뉴 항목을 업데이트할 수 있습니다. 따라서 6개의 메뉴 항목이 있는 메뉴의 경우 6개의 업데이트 명령이 전송됩니다. 메뉴 항목의 명령 ID에 대한 업데이트 처리기가 있는 경우 업데이트를 수행하도록 호출됩니다. 그렇지 않은 경우 프레임워크는 해당 명령 ID에 대한 처리기가 있는지 검사 메뉴 항목을 적절하게 사용하거나 사용하지 않도록 설정합니다.

명령 라우팅 중에 프레임워크가 항목을 찾지 ON_UPDATE_COMMAND_UI 못하면 동일한 명령 ID를 가진 항목이 있는 ON_COMMAND 경우 사용자 인터페이스 개체를 자동으로 사용하도록 설정합니다. 그렇지 않으면 사용자 인터페이스 개체를 사용하지 않도록 설정합니다. 따라서 사용자 인터페이스 개체를 사용하도록 설정하려면 개체가 생성하는 명령에 대한 처리기를 제공하거나 이에 대한 업데이트 처리기를 제공합니다. 사용자 인터페이스 개체 및 명령 ID 항목 의 그림을 참조하세요.

사용자 인터페이스 개체의 기본 비활성화를 사용하지 않도록 설정할 수 있습니다. 자세한 내용은 MFC 참조에서 클래스 CFrameWnd 의 m_bAutoMenuEnable 멤버를 참조하세요.

애플리케이션이 WM_INITMENUPOPUP 메시지를 받을 때 발생하는 프레임워크에서 메뉴 초기화가 자동으로 수행됩니다. 유휴 루프 중에 프레임워크는 메뉴와 거의 동일한 방식으로 명령 라우팅에서 단추 업데이트 처리기를 검색합니다.

참고 항목

방법: 사용자 인터페이스 개체 업데이트