다음을 통해 공유


서버: 서버 항목

사용자가 포함되거나 연결된 OLE 항목을 편집할 수 있도록 컨테이너가 서버를 시작하면 서버 애플리케이션은 "서버 항목"을 만듭니다. 파생 COleServerItem된 클래스의 개체인 서버 항목은 서버 문서와 컨테이너 애플리케이션 간의 인터페이스를 제공합니다.

COleServerItem 클래스는 일반적으로 컨테이너의 요청에 따라서 OLE에 의해 호출된 여러 재정의 가능한 멤버 함수를 정의합니다. 서버 항목은 서버 문서의 일부 또는 전체 문서를 나타낼 수 있습니다. OLE 항목이 컨테이너 문서에 포함되면 서버 항목은 전체 서버 문서를 나타냅니다. OLE 항목이 연결되면 서버 항목은 연결이 일부에 대한 것인지 또는 전체에 대한 것인지에 따라 서버 문서의 일부나 전체 문서를 나타낼 수 있습니다.

HIERSVR 샘플(예: 서버 항목 클래스)에는 클래스CServerItemCServerNode의 개체에 대한 포인터인 멤버가 있습니다. 개체는 CServerNode 트리인 HIERSVR 애플리케이션 문서의 노드입니다. 개체가 CServerNode 루트 노드인 경우 개체는 CServerItem 전체 문서를 나타냅니다. 개체가 CServerNode 자식 노드인 경우 개체는 CServerItem 문서의 일부를 나타냅니다. 이 상호 작용의 예는 MFC OLE 샘플 HIERSVR 을 참조하세요.

서버 항목 구현

애플리케이션 마법사를 사용하여 애플리케이션에 대한 "시작" 코드를 생성하는 경우 시작 코드에 서버 항목을 포함하려면 OLE 옵션 페이지에서 서버 옵션 중 하나를 선택하기만 하면 됩니다. 기존 애플리케이션에 서버 항목을 추가하는 경우 다음 단계를 수행합니다.

서버 항목을 구현하려면

  1. COleServerItem에서 클래스를 파생합니다.

  2. 파생 클래스에서 OnDraw 멤버 함수를 재정의합니다.

    프레임워크는 OnDraw를 호출하여 OLE 항목을 메타파일로 렌더링합니다. 컨테이너 애플리케이션은 이 메타파일을 사용하여 항목을 렌더링합니다. 애플리케이션의 뷰 클래스에는 OnDraw 멤버 함수도 있습니다. 이 함수는 서버 애플리케이션이 활성화인 경우 항목을 렌더링하는 데 사용됩니다.

  3. 서버 문서 클래스에 대한 OnGetEmbeddedItem의 재정의를 구현합니다. 자세한 내용은 서버: 서버 문서 구현 및 MFC OLE 샘플 HIERSVR 문서를 참조하세요.

  4. 서버 항목 클래스의 OnGetExtent 멤버 함수를 구현합니다. 프레임워크는 항목의 크기를 검색하기 위해 이 함수를 호출합니다. 기본 구현은 아무 작업도 수행하지 않습니다.

서버 항목 아키텍처에 대한 팁

서버 항목 구현에서 설명한 것처럼 서버 애플리케이션은 서버 보기와 컨테이너 애플리케이션에서 사용하는 메타파일 모두에서 항목을 렌더링할 수 있어야 합니다. Microsoft Foundation 클래스 라이브러리의 애플리케이션 아키텍처에서 뷰 클래스의 OnDraw 멤버 함수는 편집할 때 항목을 렌더링합니다(클래스 라이브러리 참조의 CView::OnDraw 참조). 서버 항목은 OnDraw 다른 모든 경우에 항목을 메타파일로 렌더링합니다(COleServerItem::OnDraw 참조).

서버 문서 클래스에서 도우미 함수를 작성하고 뷰와 서버 항목 클래스의 OnDraw 함수에서 해당 함수를 호출하여 코드의 중복을 방지할 수 있습니다. MFC OLE 샘플 HIERSVR은 함수와 CServerItem::OnDraw 둘 다 CServerDoc::DrawTree 호출하여 항목을 렌더링하는 전략을 CServerView::OnDraw 사용합니다.

다양한 상황에서 그리기 때문에 뷰 및 항목은 모두 OnDraw 멤버 함수를 보유합니다. 뷰는 확대/축소, 크기 및 범위 선택, 클리핑 및 사용자 인터페이스 요소(예: 스크롤 막대)와 같은 요소를 고려해야 합니다. 반면에 서버 항목은 항상 전체 OLE 개체를 그립니다.

자세한 내용은 클래스 라이브러리 참조에서 CView::OnDraw, COleServerItem, COleServerItem::OnDrawCOleServerDoc::OnGetEmbeddedItem을 참조하세요.

참고 항목

서버