다음을 통해 공유


StoClien 샘플 만들기 및 실행

StoClien COM 서버의 COPaper 개체와 협력하여 COM 복합 파일에서 드로잉을 영구적으로 저장합니다. StoClien의해 COPaper에 제공된 복합 파일에서 COPaper의 스트림 사용에 대한 자세한 내용은 StoServe 샘플 및 STOSERVE.HTM 참조하세요. COPaper의 생성 및 IPaper 인터페이스는 StoServe 샘플에서도 다룹니다.

코드 둘러보기

이 코드 둘러보기에서 다루는 주요 항목은 다음과 같습니다.

  • CGuiPaperStoClien의 전자 드로잉 용지의 GUI 동작을 어떻게 캡슐화하는지
  • StoClien이 대화형 그리기 활동을 캡처하고 표시하는 방법
  • CGuiPaper 개체가 COPaper를 사용하여 그리기 데이터를 기록하는 방법
  • 다시 칠할 때 IPaperSink 연결을 사용하는 방법
  • CPapFile 로드저장 메서드가 복합 파일의 구조적 스토리지를 사용하는 방법

FRECLIEN 및 CONCLIEN 샘플에 사용되는 CGuiBall 클래스가 튀는 공의 동작을 캡슐화함에 따라 StoClienCGuiPaper C++ 클래스를 사용하여 전자 그리기 용지의 데이터 및 GUI 동작을 캡슐화합니다.

다음 표에서는 StoClien 샘플과 관련한 파일을 나열합니다.

파일 묘사
STOCLIEN.TXT 간단한 샘플 설명입니다.
메이크파일 코드 샘플을 빌드하기 위한 제네릭 메이크파일입니다.
스토클리엔. H StoClien 애플리케이션에 대한 포함 파일입니다. 클래스 선언, 함수 프로토타입 및 리소스 식별자를 포함합니다.
스토클리엔. CPP STOCLIEN.EXE 대한 기본 구현 파일입니다. WinMain 및 CMainWindow 구현과 주 메뉴 디스패치가 있습니다.
스토클리엔. RC 애플리케이션 리소스 정의 파일입니다.
스토클리엔. ICO 애플리케이션 아이콘 리소스입니다.
스토클리엔. PAP 애플리케이션에 대한 기본 용지 그리기 파일입니다.
연필.CUR 클라이언트 창 커서에 대한 연필 이미지입니다.
SINK.H COPaperSink COM 개체 클래스에 대한 클래스 선언입니다.
SINK.CPP COPaperSink COM 개체 클래스에 대한 구현 파일입니다.
PAPFILE. H CPapFile C++ 클래스에 대한 클래스 선언입니다.
PAPFILE.CPP CPapFile C++ 클래스에 대한 구현 파일입니다.
GUIPAPER.H CGuiPaper C++ 클래스에 대한 클래스 선언입니다.
GUIPAPER.CPP CGuiPaper C++ 클래스에 대한 구현 파일입니다.
스토클리엔. DSP Microsoft Visual Studio 프로젝트 파일.

 

복합 파일

StoClien COPaper를 사용하여 그리기 데이터를 기록합니다. 또한 COPaper를 사용하여 데이터를 복합 파일에 저장합니다. 그러나 일반적인 COM 클라이언트와 서버 간의 작업 분담에서 파일 스토리지에 대한 책임의 일부를 StoClien이 공유합니다. 클라이언트가 컨테이너이고 서버가 포함된 개체인 COM 애플리케이션에서는 이러한 노동 분담이 중요합니다. 이 정렬에서 클라이언트는 구조화된 스토리지 파일을 만들거나 여는 작업을 담당하지만 서버 개체는 자체 데이터 스토리지를 위해 해당 스토리지를 사용해야 합니다. 여기에는 서버 개체가 스토리지에 제공된 하위 저장소를 만드는 작업이 포함될 수 있습니다. 일반적으로 스토리지에서 스트림 개체를 만드는 서버 개체가 포함됩니다. COPaper의 스토리지 스트림 사용은 StoClien 샘플에 자세히 설명되어 있습니다.

IStorage 인터페이스는 클라이언트 및 서버 개체 모두에서 파일 작업을 수행하는 데 사용됩니다. 구조적 스토리지 아키텍처의 복합 파일 구현이 사용됩니다. 표준 서비스 함수는 복합 파일에 대한 작업에 사용됩니다. 예를 들어 StgCreateDocfile 함수는 처음에 복합 파일을 만들고 파일을 조작하는 데 사용할 수 있는 IStorage 포인터를 다시 전달합니다. 이 특정 함수는 StoClien호출됩니다. 가져온 IStorage 인터페이스는 이를 사용하기 위해 COPaper에 매개 변수로 전달됩니다. COPaper 개체는 자체적으로 복합 파일을 만들거나 열지 않습니다. IStorageIStream 인터페이스를 사용하여 지정된 복합 파일에서 작동합니다.

이러한 IStorageIStream 인터페이스는 StoClien 또는 StoServe내에서 구현되지 않습니다. COM 라이브러리 내에서 구현됩니다. 이러한 인터페이스 중 하나에 대한 포인터를 가져올 때 해당 메서드는 기본적으로 복합 파일에서 작동하는 서비스 집합으로 사용됩니다.