개요 | |
해결 대상 문제. MFC 로 MDI 프로젝트에서 다중문서 템플릿을 마법사만으로 생성한 경우 MDI 실행프로그램 메뉴 -> 파일 -> 새로만들기 .. 클릭한 경우 (아래 그림)
아래 처럼 대화상자 "새로만들기"가 뜨면서 다중문서 템플릿중 어떤 것을 새로 만들것인지 물어본다. 본 예에서는 2종의 다중문서 템플릿이 있는 상태고,따라서 2종 중에서 어떤 것을 새로 만들지 대화창에서 물어보고 있다.
다중문서템플릿을 갖는 MDI 실행프로그램에서는 위와 같은 형식보다는 각각의 다중문서별로 메뉴에서 새로만들기를 지정할 수 있는 구조가 훨씬 편리하다. 즉, 메뉴에서 New 클릭하면 서브로 신규 생성할 문서템플릿을 선택할 수 있는 메뉴가 있고, 이것을 클릭했을대 해당하는 문서템플릿이 새로 만들어지게 한다.
구현하기. 요점. 위와 같은 방식으로 작동되게 하려면 ID_FILE_NEW 메시지 처리하는 핸들러 OnFileNew 를 우리 코드에 추가하여 구현한다.
참고. 기본 생성된 MDI 프로젝트에서 ID_FILE_NEW 메시지 핸들러인 OnFileNew는 클래스 CWinApp 의 protected 멤버함수로 되어있으며, 기본 제공되는 OnFileNew의 기능이 앞에서 보인 대화창을 보이면서 새문서를 선택하라는 기능으로 구현되어있다. 우리는 기본 제공 기능이 마음에 들지 않으므로 우리 코드에서 OnFileNew 를 오버라이딩 하여 새로운 기능을 구현하려는 것임.
본글의 이후 설명은 이전 글 (http://igotit.tistory.com/610 MDI 프로젝트에 신규 문서 템플릿 추가하기) 이후의 코드 구현 사항. 아래 상세 에서 정리. | |
|
상세 | |||||||
1. OnFileNew 추가하기. 우리의 MDI 프로젝트에서 클래스 CCySignalAPP (MFC MDI 위저드로 생성시 CWinApp 를 베이스 클래스로 하는 클래스임) 에서 클래스 위저드 실행시켜. 아래그림의 붉박 처럼 선택하고 오른쪽 버튼 처리기 추가.. 클릭한다.
CCySignal.cpp 파일의 상단 메시지맵에 붉줄처럼 ID_FILE_NEW 에 대한 처리기 OnFileNew() 가 추가된다.
주의 : 위 파박처럼 기본생성되어있던 메시지핸들러 연결은 주석처리한다. 새로추가된 OnFileNew 함수 정의엔 아래 처럼 코드 추가한다.
상기 코드에서 굵은글자 m_poscntDocTemp 는 문서템플릿에 추가한 순서에 따라 1부터 번호를 할당하면 된다. 변수 m_poscntDocTemp 에 번호를 지정하여 OnFileNew가 호출되면 해당 문서가 뜨게 된다.
상기 메뉴 각각의 메시지 처리기의 코드를 아래 처럼 추가한다.
이제 실행시켜 보면 메뉴의 각 문서 타입을 클릭하면 해당 문서가 뜬다.
만일, 기본 대화창에서 물어보는 방식도 유지하려는 경우엔 아래처럼 코딩하면된다.
| |||||||
|
본 글이 포함된 상위 정리 장소.
Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11
|
///666.
'VisualStudio.C++.C#' 카테고리의 다른 글
Visual Studio 여러 버전 동시 설치 (0) | 2016.03.07 |
---|---|
VC++ MDI 초기창 뜨지 않게 (0) | 2016.02.15 |
UWP 설치. Universal Windows Platform Tools. (0) | 2016.02.07 |
VC++. MDI View 를 정적 분할 윈도우로 만들기. (0) | 2016.01.26 |
VC++ MDI 프로젝트에 신규 문서 템플릿 추가하기. (0) | 2016.01.26 |
댓글