본문 바로가기
VisualStudio.C++.C#

VC++ MDI 프로젝트에 신규 문서 템플릿 추가하기.

by i.got.it 2016. 1. 26.


 

개요.

 

 MDI 프로젝트에 새로운 문서템플릿 추가하기.


설명.

MFC위저드로 생성한 MDI 프로젝트에는 1개의 문서타입만 자동생성해준다. 즉, 1개의 "문서클래스, 뷰클래스, 프레임윈도우 클레스" 만 생성된다. 예를들어 MDI 형식으로 생성한 프로젝트 CySignal ( http://igotit.tistory.com/609 )   를 보면 아래처럼 3개의 클래스가 한 셋을 이루고 있다.

1. 뷰클래스(CView 베이스) : CCySignalView

2. 문서클래스 : CCySignalDoc

3. 프레임 윈도우 클래스 : CChildFrame


통상 MDI 형식으로 응용프로그램을 만드는 경우, 응용대상이 단순하지 않기 때문이며 위와같이  1개 형식의 View만으로는 충분치 못한 경우가 많다. 필요에 따라 얼마든지 추가 가능하며, 본 글에서는 아래처럼 추가의 "문서템플릿" 을 추가 과정 정리한다.


이전 제작된 CySignal MDI 프로젝트 상태 ( http://igotit.tistory.com/609 ) 에서,

1. 뷰클래스 : CCyChartView (CFormView 에서 상속시킴.)

2. 문서클래스 : CCyChartDoc (CDocument에서 상속시킴.)

3. 프레임 윈도우 클래스 : CCyChartChildFrame (CMDIChildWndEx에서 상속시킴)

 

 


 

 

상세. - MDI 프로젝트에 신규 문서템플릿 등록과정.

 

1. 클래스 위저드 이용하여 3개의 클래스 신규 생성.
아래 3개의 클래스를 클래스 위저드를 이용하여 생성한다. 클래스 위저드를 이용하여 생성하는 방법은 모두 동일하며  -> http://igotit.tistory.com/480 설명의 클래스 위저드 이용하여 추가하는 과정에서 클래스 이름과 베이스 클래스를 아래 사항대로 지정해서 생성한다.

클래스 이름.   베이스 클래스.
CCyChartChildFrame. CMDIChildWndEx
CCyChartDoc   CDocument
CCyChartView . CFormView


1.1 클래스 CCyChartChildFrame 추가하기. 

신규 추가할 View에서 분할윈도우 가능하게 하려면 아래 베이스 클래스 선택시 (with spilitter window) 있는것을 선택한다.



1.2 클래스 CCyChartDoc 추가하기.



1.3 클래스 CCyChartView 추가하기.



상기 창에서 DocTemplate 리소스 생성을 선택하면 버튼 "다음" 이 활성화되며 클릭하면 아래 처럼 설정창이 뜬다.

이 단계에서 신규 추가할 뷰는 전용의 doc을 가진것으로 만들기때문에 붉박에서처럼 CCyChartDoc 을 선택한다.



추가 . 2020.09.18 


VC++2019 에서는 View 클래스 추가시 "DocTemplate 리소스 생성" 체크박스가 사라졌기에 해당 정보를 수동으로 직접 생성해줘야 한다. 

리소스의 string table 에 새로 추가해주면됨. 아래그림 처럼 스트링 테이블 화면에서 우클릭하여 보이는 메뉴에서 New String 추가해도 되고 기존에 있던 IDR_TYPE_CySystem 을 복사해서 수정하여 사용해도 된다. 


캡션 부분에 기록되는 항목들의 의미. \n 을 구분자로 하여 7개의 항목이 기록되며 앞의 문서 템플릿 속성창에서 기록했던 그 내용들이 에 해당한다. 이미 기존에 만들어진것 복사해서 새로 만들어진 것의 이름으로 수정하면 됨. 

=====================




우리 프로젝트에 3개의 클래스가 추가되어있고, CFormView에 연동된 대화상자(아래 파박) 도 자동생성되어있다.


메인App 인 CySignalApp 에도 자동으로 도큐먼트 템플릿등록처리 코드가 추가되어있다.
주의사항 : 전부 자동으로 처리되는데 메인App 파일에서 클래스 CCyChartDoc과 CCyChartChildFrame 을 위한 헤드파일 인클루드 구문은 자동으로 생성되지 않는다.
문서 CySignal.cpp 상단에 #include "CyChartDoc.h" 와 #include "CyChartChildFrame.h" 추가하자. .

자동으로 생성된 도큐먼트 템플릿 등록코드가 완전하지 않다. 아래 자동생성된 코드를 보면 초기에 만들어진 CChildFrame 로 연결되어 있는데,

우리는 별도의 차일드프레임을 등록할것이므로 아래처럼 새로만든 차이들프레임 클래스로 변경한다.




 


 


 

실행해보기.

 
클래스위저드에서 3개의 클래스 추가 한 것만으로도 바로 실행가능한 상태가 된다.

실행시켜보면, 이전과는 달리 "새로만들기"  창에서 사용자의 선택을 요구한다. 본 과정에서 신규 추가된 CyChartView 가 정상적으로 적용되었다.
 


정상적으로 신규 추가된  CFormView형식으로 생성되었다.


이 상태에서 메뉴 -> 파일 -> 새로만들기 클릭하여 초기 기본 CView 를 생성시켜보면 아래 처럼 역시 잘 생성된다.



 


 

 

View-Doc 연결코드 만들어 두기.

 

새로이 추가된 CyChartView 가 정상적으로 보였다고 신규 뷰 추가 기본 코드 작업이 완료된것 아니며, 우리의 CCyChartView  와 연동될 CCyChartDoc 의 연결 코드 미리 추가 해두자.


CyChartView.h 에 아래 처럼 코드 추가하고,



CyChartView.cpp 에도 아래처럼 코드 추가해두자.




 


 



 본 글이 포함된 상위 정리 장소.

 

 Visual Studio/VC++/C/C# 활용정리 -> http://igotit.tistory.com/11

 

 



 


첫 등록 : 2016.01.26 

최종 수정 : 2020.09.18

단축 주소 : https://igotit.tistory.com/610

 


 




댓글



 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5