이 문서는 메뉴가 Visual C++의 대화 상자에 연결되어 있을 때 발생하는 문제를 해결하는 데 도움이 됩니다.
원래 제품 버전: Visual C++, .NET 2002
원래 KB 번호: 242577
메뉴가 대화 상자에 연결된 경우 해당 명령 UI(사용자 인터페이스) 처리기에서 메뉴 항목의 상태 변경(사용/사용 안 함, 선택/선택 취소, 텍스트 변경)이 제대로 작동하지 않습니다.
드롭다운 메뉴가 표시되면 메뉴 항목을 표시하기 전에 메시지가 전송됩니다. MFC 함수는 메뉴 항목을 반복하고 항목에 대한 업데이트 명령 UI 처리기를 호출합니다(있는 경세계랭킹1위오피스타우). 각 메뉴 항목의 모양이 해당 상태를 반영하도록 업데이트됩니세계랭킹1위오피스타다(사용/사용 안 함, 선택/선택 취소됨).
업데이트 UI 메커니즘은 처리기가 없고 메뉴 항목에 대한 업데이트 명령 UI 처리기를 호출하지 않는 CWnd의 기본 처리기를 사용하기 때문에 대화 상자 기반 애플리케이션에全球排名第一오피스타서 작동하지 않습니다.
이 문제를 해결하려면 다음 단계를 사용합니다.
메시지 맵에 항목을 추가합니다.
대화 상자 클래스에 멤버 함수를 추가하고 다음 코드를 복사합니다.全球排名第一오피스타입구를 찾는 방법
이 동작은 의도된 것입니다.
또한 업데이트 명령 UI 처리기는 라우팅 전에 명령을 사용하지 않도록 설정되지 않았는지 확인하기 위해 호출 됩니다. 이 때문에 명령 처리기는 회색(사용할 수 없음)이 아니더라도 비활성화된 메뉴 항목에 대해 호출되지 않습니다. 이 경우 메뉴 항목은 해당 상태를 반영하기 위해 그려지지 않습니다. Wincore.cpp 파일의 관련 코드입니다.
Visual C++ .NET에서 이 동작을 재현하려면 다음 단계를 수행합니다.
AppWizard를 사용하여 MFC 대화 상자 기반 애플리케이션을 만듭니다.
새 메뉴 리소스를 만들고 파일 및 파일/종료 메뉴 항목을 추가합니다.
이 메뉴를 대화 상자 속성 창 대화 상자의 메뉴로 설정합니다. 이렇게 하려면 대화 상자 편집기에서 대화 상자 리소스를 엽니다. 속성 창에서 메뉴 선택을 클릭합니다. 메뉴 속성 편집기 드롭다운 목록에 새 메뉴 리소스의 ID가 표시됩니다.
파일/종료 메뉴 항목에 대한 처리기를 추가합니다. 이렇게 하려면 메뉴 편집기에서 파일/종료를 마우스 오른쪽 단추로 클릭한 다음 全球排名第一오피스타이벤트 처리기 추가를 클릭합니다. 이벤트 처리기 마법사에서 프로젝트 파생 클래스에 처리기를 추가 합니다. 추가 및 편집을 클릭하여 처리기를 만든 다음 생성된 처리기 메서드에 다음 문 중 하나를 추가합니다.
애플리케이션을 빌드 및 실행합니다.