다음을 통해 공유


컨테이너: 고급 기능

이 문서에서는 선택적 고급 기능을 기존 컨테이너 애플리케이션에 통합하는 데 필요한 단계를 설명합니다. 이러한 기능은 다음과 같습니다.

컨테이너/서버 애플리케이션 만들기

컨테이너/서버 애플리케이션은 컨테이너와 서버의 역할을 하는 애플리케이션입니다. Windows용 Microsoft Word가 그 예입니다. 다른 응용 프로그램에 Windows용 Word 문서를 포함할 수 있으며 Windows용 Word 문서에 항목을 포함할 수도 있습니다. 컨테이너 애플리케이션을 컨테이너 및 전체 서버로 수정하는 프로세스(조합 컨테이너/미니 서버 애플리케이션을 만들 수 없음)는 전체 서버를 만드는 프로세스와 유사합니다.

문서 서버: 서버 구현에는 서버 애플리케이션을 구현하는 데 필요한 여러 작업이 나열됩니다. 컨테이너 애플리케이션을 컨테이너/서버 애플리케이션으로 변환하는 경우 컨테이너에 코드를 추가하여 동일한 작업 중 일부를 수행해야 합니다. 다음은 고려해야 할 중요한 사항을 나열합니다.

  • 애플리케이션 마법사에서 만든 컨테이너 코드는 이미 OLE 하위 시스템을 초기화합니다. 해당 지원을 위해 아무것도 변경하거나 추가할 필요가 없습니다.

  • 문서 클래스의 기본 클래스가 COleDocument어디에 있든 기본 클래스를 .로 변경합니다 COleServerDoc.

  • 서버 자체가 현재 위치에서 편집하는 데 사용되는 동안 제자리에 있는 항목을 편집하지 않도록 재정 COleClientItem::CanActivate 의합니다.

    예를 들어 MFC OLE 샘플 OCLIENT 에는 컨테이너/서버 애플리케이션에서 만든 항목이 포함되어 있습니다. OCLIENT 애플리케이션을 열고 컨테이너/서버 애플리케이션에서 만든 항목을 현재 위치에서 편집합니다. 애플리케이션의 항목을 편집하는 동안 MFC OLE 샘플 HIERSVR에서 만든 항목을 포함하기로 결정합니다. 이렇게 하려면 현재 위치 정품 인증을 사용할 수 없습니다. 이 항목을 활성화하려면 HIERSVR을 완전히 열어야 합니다. Microsoft Foundation 클래스 라이브러리는 이 OLE 기능을 지원하지 않으므로 재정 COleClientItem::CanActivate 의를 사용하면 이 상황을 검사 애플리케이션에서 가능한 런타임 오류를 방지할 수 있습니다.

새 애플리케이션을 만들고 컨테이너/서버 애플리케이션으로 작동하도록 하려면 애플리케이션 마법사의 OLE 옵션 대화 상자에서 해당 옵션을 선택하면 이 지원이 자동으로 만들어집니다. 자세한 내용은 개요: ActiveX 컨트롤 컨테이너 만들기 문서를 참조하세요. MFC 샘플에 대한 자세한 내용은 MFC 샘플을 참조 하세요.

MDI 애플리케이션 자체는 삽입할 수 없습니다. 컨테이너/서버인 애플리케이션은 SDI 애플리케이션이 아니면 자체에 삽입할 수 없습니다.

포함된 개체에 대한 링크 기능을 사용하면 컨테이너 애플리케이션 내에 포함된 개체에 대한 OLE 링크가 있는 문서를 만들 수 있습니다. 예를 들어 포함된 스프레드시트를 포함하는 문서를 워드 프로세서에 만듭니다. 애플리케이션이 포함된 개체에 대한 링크를 지원하는 경우 워드 프로세서의 문서에 포함된 스프레드시트에 대한 링크를 붙여넣을 수 있습니다. 이 기능을 사용하면 애플리케이션에서 워드 프로세서가 원래 어디서 얻었는지 모르고 스프레드시트에 포함된 정보를 사용할 수 있습니다.

  1. 대신에서 문서 클래스 COleLinkingDocCOleDocument파생합니다.

  2. OLE 개발 도구에 포함된 클래스 ID 생성기를 사용하여 애플리케이션에 대한 OLE 클래스 ID(CLSID)를 만듭니다.

  3. OLE에 애플리케이션을 등록합니다.

  4. COleTemplateServer 애플리케이션 클래스의 멤버로 개체를 만듭니다.

  5. 애플리케이션 클래스의 InitInstance 멤버 함수에서 다음을 수행합니다.

    • COleTemplateServer 개체의 ConnectTemplate 멤버 함수를 호출하여 개체를 문서 서식 파일에 커넥트.

    • 멤버 함수를 COleTemplateServer::RegisterAll 호출하여 모든 클래스 개체를 OLE 시스템에 등록합니다.

    • COleTemplateServer::UpdateRegistry을 호출합니다. 애플리케이션이 "/Embedded" 스위치를 사용하여 시작되지 않은 경우 OAT_CONTAINER 유일한 매개 변수 UpdateRegistry 입니다. 그러면 애플리케이션이 포함된 개체에 대한 링크를 지원할 수 있는 컨테이너로 등록됩니다.

      "/Embedded" 스위치를 사용하여 애플리케이션을 시작하면 서버 애플리케이션과 유사한 기본 창이 표시되지 않아야 합니다.

MFC OLE 샘플 OCLIENT 는 이 기능을 구현합니다. 이 작업을 수행하는 방법에 대한 예제는 OCLIENT의 InitInstance 함수를 참조하세요. 이 샘플 애플리케이션의 CPP 파일입니다.

참고 항목

컨테이너
서버