다음을 통해 공유


CMultiDocTemplate 클래스

MDI(다중 문서 인터페이스)를 구현하는 문서 템플릿을 정의합니다.

구문

class CMultiDocTemplate : public CDocTemplate

멤버

이 클래스의 멤버 함수는 가상입니다. 설명서는 CDocTemplateCCmdTarget을 참조하세요.

공용 생성자

속성 설명
CMultiDocTemplate::CMultiDocTemplate CMultiDocTemplate 개체를 생성합니다.

설명

MDI 애플리케이션은 주 프레임 창을 사용자가 문서를 표시하는 0개 이상의 문서 프레임 창을 열 수 있는 작업 영역으로 사용합니다. MDI에 대한 자세한 설명은 소프트웨어 디자인에 대한 Windows 인터페이스 지침을 참조하세요.

문서 템플릿은 세 가지 유형의 클래스 간의 관계를 정의합니다.

  • CDocument에서 파생되는 문서 클래스입니다.

  • 위에 나열된 문서 클래스의 데이터를 표시하는 뷰 클래스입니다. CView, CScrollView또는 CFormViewCEditView.에서 이 클래스를 파생시킬 수 있습니다. (직접 사용할 CEditView 수도 있습니다.)

  • 보기를 포함하는 프레임 창 클래스입니다. MDI 문서 템플릿의 경우 이 클래스를 CMDIChildWnd파생하거나 문서 프레임 창의 동작을 사용자 지정할 필요가 없는 경우 고유한 클래스를 파생하지 않고 CMDIChildWnd를 직접 사용할 수 있습니다.

MDI 애플리케이션은 둘 이상의 문서 형식을 지원할 수 있으며 다른 형식의 문서를 동시에 열 수 있습니다. 애플리케이션에는 지원하는 각 문서 형식에 대해 하나의 문서 서식 파일이 있습니다. 예를 들어 MDI 애플리케이션이 스프레드시트와 텍스트 문서를 모두 지원하는 경우 애플리케이션에는 두 개의 CMultiDocTemplate 개체가 있습니다.

애플리케이션은 사용자가 새 문서를 만들 때 문서 템플릿을 사용합니다. 애플리케이션에서 둘 이상의 문서 형식을 지원하는 경우 프레임워크는 문서 서식 파일에서 지원되는 문서 형식의 이름을 가져와 [파일 새로 만들기] 대화 상자의 목록에 표시합니다. 사용자가 문서 형식을 선택하면 애플리케이션에서 문서 클래스 개체, 프레임 창 개체 및 뷰 개체를 만들어 서로 연결합니다.

생성자를 제외한 멤버 함수를 CMultiDocTemplate 호출할 필요가 없습니다. 프레임워크는 내부적으로 개체를 처리합니다 CMultiDocTemplate .

자세한 내용은 CMultiDocTemplate문서 서식 파일 및 문서/보기 만들기 프로세스를 참조 하세요.

상속 계층 구조

CObject

CCmdTarget

CDocTemplate

CMultiDocTemplate

요구 사항

헤더: afxwin.h

CMultiDocTemplate::CMultiDocTemplate

CMultiDocTemplate 개체를 생성합니다.

CMultiDocTemplate(
    UINT nIDResource,
    CRuntimeClass* pDocClass,
    CRuntimeClass* pFrameClass,
    CRuntimeClass* pViewClass);

매개 변수

nIDResource
문서 형식에 사용되는 리소스의 ID를 지정합니다. 여기에는 메뉴, 아이콘, 액셀러레이터 테이블 및 문자열 리소스가 포함될 수 있습니다.

문자열 리소스는 '\n' 문자로 구분된 최대 7개의 부분 문자열로 구성됩니다(부분 문자열이 포함되지 않은 경우 '\n' 문자는 자리 표시자로 필요함) 후행 '\n' 문자는 필요하지 않습니다. 이러한 부분 문자열은 문서 형식을 설명합니다. 하위 문자열에 대한 자세한 내용은 CDocTemplate::GetDocString을 참조 하세요. 이 문자열 리소스는 애플리케이션의 리소스 파일에서 찾을 수 있습니다. 예시:

// MYCALC.RC
STRINGTABLE PRELOAD DISCARDABLE
BEGIN
  IDR_SHEETTYPE "\nSheet\nWorksheet\nWorksheets (*.myc)\n.myc\n MyCalcSheet\nMyCalc Worksheet"
END

첫 번째 부분 문자열은 MDI 애플리케이션에 사용되지 않으므로 문자열이 '\n' 문자로 시작되므로 포함되지 않습니다. 문자열 편집기를 사용하여 이 문자열을 편집할 수 있습니다. 전체 문자열은 7개의 개별 항목이 아니라 문자열 편집기에서 단일 항목으로 나타납니다.

이러한 리소스 종류에 대한 자세한 내용은 리소스 편집기를 참조 하세요.

pDocClass
문서 클래스의 CRuntimeClass 개체를 가리킵니다. 이 클래스는 CDocument문서를 나타내기 위해 정의하는 파생 클래스입니다.

pFrameClass
CRuntimeClass 프레임 창 클래스의 개체를 가리킵니다. 이 클래스는 CMDIChildWnd파생 클래스이거나 문서 프레임 창에 대한 기본 동작을 원하는 경우 그 자체가 될 CMDIChildWnd 수 있습니다.

pViewClass
뷰 클래스의 CRuntimeClass 개체를 가리킵니다. 이 클래스는 CView문서를 표시하기 위해 정의하는 파생 클래스입니다.

설명

애플리케이션이 지원하는 각 문서 형식에 대해 하나의 CMultiDocTemplate 개체를 동적으로 할당하고 애플리케이션 클래스의 멤버 함수에서 InitInstance 각 개체를 CWinApp::AddDocTemplate 전달합니다.

예시

// Code fragment from CMyApp::InitInstance

// Establish all of the document types
// supported by the application

AddDocTemplate(new CMultiDocTemplate(IDR_BRUSHDOCTYPE,
   RUNTIME_CLASS(CBrushDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CBrushView)));

AddDocTemplate(new CMultiDocTemplate(IDR_DCDOCTYPE,
   RUNTIME_CLASS(CDCDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CDCView)));

다음은 두 번째 예입니다.

// Code fragment taken from CMyApp::InitInstance

// Normally, an application creates a document 
// template and registers it with MFC as a part
// of its initialization.

// IDR_EXAMPLEDOCTYPE is a resource ID string; see
// the CDocTemplate class overview documentation
// for more information on its format.

// The next three parameters use the RUNTIME_CLASS()
// macro to get runtime type information for the doc,
// frame, and view classes that will be associated
// by the template.

pDocTemplate = new CMultiDocTemplate(IDR_EXAMPLEDOCTYPE,
   RUNTIME_CLASS(CExampleDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CExampleView));
if (!pDocTemplate)
return FALSE;

// After the following call, MFC is aware of the doc
// template and will free it when the application is
// shut down. The doc templates known to MFC will
// automatically be used when CWinApp:OnFileOpen()
// or CWinApp::OnFileNew() are called.

AddDocTemplate(pDocTemplate);

참고 항목

CDocTemplate 클래스
계층 구조 차트
CDocTemplate 클래스
CSingleDocTemplate 클래스
CWinApp 클래스