2012-09-25 2 views
0

MFC MDI를 사용하고 있습니다. 주 문서 창에 창을 만듭니다. MDI 창보기의 자식으로 다른 창 (두 번째 창이라고도 함)을 만든 다음 두 번째 창의 자식 창 (세 번째 창)을 만듭니다. 다시 또 다른 창, 세 번째 창 자식 창을 만들어야합니다. 리본에 버튼이 있고이 명령을 처리하기 위해 세 번째 창에서 메시지 처리기를 호출하려고합니다. 메시지 맵과 모든 필수 항목을 추가했지만 메시지 처리기를 호출하지 않습니다. MDI 창보기에서 메시지 처리기를 정의하면 이벤트를 포착합니다. 주 CWinApp 클래스 또는 MDI 창 View 클래스에서 메시지 처리기를 숨기지 않으면 단추가 비활성화 된 것처럼 보입니다.사용자 정의 윈도우 클래스에 이벤트 핸들러 추가

내 모든 하위 뷰 클래스는 CWnd에서 상속되며 주 MDI 창은 CView에서 파생됩니다. 제가 여기서 누락 된 것을 알려주십시오.

사바

+0

부모 자식 관계 및 포커스는 모두 정상적으로 작동하지만 이벤트는 자식 창으로 라우팅되지 않습니다. – Saba

+1

메시지를 직접 전달해야 할 수도 있습니다. 나는 비슷한 것을 경험해 보았고 IIRC 프레임 워크가 윈도우에 전달되었지만, 여러분이 여는 다른 윈도우 (이 추가 자식)는 메시지를 직접 전달하지 않는 한 아무 것도 얻지 못할 것입니다. – Nerdtron

+0

감사합니다 Nerdtron, 나는 당신이 옳다고 생각합니다. 나는 몇 가지 더 시도했지만 아무 것도 효과가 없었습니다. 기본적으로 리본은이를 메인 프레임으로 보내고 메인 프레임은보기 또는 응용 프로그램에 제공합니다. 난 거기에 MFC 코드에서 검색 초점에 창문 관련 anyhting을 찾으십시오. – Saba

답변

0

나는 여기를 잃고있다. MFC를 사용하고 있습니다. 왜 이벤트를 사용합니까? 명령 메시지와 명령 메시지 처리기 대신 이벤트를 사용하십시오. MFC 구현 및 잘 작동하는 명령 라우팅을 사용하십시오.

+0

미안하지만, 기본적으로 여러 플랫폼에서 작동하며 모든 곳에서 핵심 단어가 다릅니다. 메시지 및 메시지 처리기를 사용하고 있습니다. – Saba

0

MFC는 리본 단추를 클릭하여 생성 된 메시지를 자식 창으로 라우트하지 않습니다. MDI 창의 하위 창에 메시지를 보내려면 직접해야합니다. 리본 단추의 메시지는 활성 MDI 창이나 CWinApp 클래스에 전달됩니다.

관련 문제