다음을 통해 공유


IPaperSink 메서드

COPaper는 클라이언트가 COPaper에서 발생하는 지정된 이벤트의 알림을 받기 위해 COPaper에 연결할 수 있도록 IConnectionPointContainer 인터페이스를 노출합니다. 이 인터페이스를 노출하면 COPaper가 연결 가능한 개체가 됩니다. 클라이언트는 이 인터페이스에 대해 QueryInterface 를 호출하고 이를 사용하여 개체의 연결점을 가져올 수 있습니다. 이 체계에 대한 클라이언트 참여는 연결된 StoClien 샘플에서 다룹니다.

기본적으로 클라이언트는 싱크 인터페이스를 사용하여 싱크 개체의 형태로 싱크라고 하는 것을 구현합니다. 싱크 인터페이스는 클라이언트가 COPaper instance 올바르게 연결한 후 COPaper에서 나가는 이벤트 알림 호출을 받습니다. 클라이언트는 COPaper에서 관리하는 연결 지점 개체를 사용하여 연결을 만듭니다. 연결 가능한 단일 COM 개체에 수많은 연결 지점이 있을 수 있습니다. StoServe 샘플에서 COPaper에는 그리기 용지 이벤트를 처리하는 연결점이 하나만 있습니다.

모든 수의 클라이언트가 단일 연결 지점에 연결할 수 있습니다. COPaper의 CONNPOINT_PAPERSINK 연결 지점은 런타임에 동적으로 확장할 수 있는 연결 그룹을 유지 관리합니다. COPaper의 연결 가능한 개체 지원에 대한 자세한 내용은 CONNECT 파일로 코딩됩니다. H 및 CONNECT. CPP 및 는 여기에서 다루지 않습니다. 생성은 CONSERVE 코드 샘플에서 연구한 것과 매우 유사합니다.

StoClien 클라이언트는 COPaper에서 찾을 것으로 예상되는 연결 지점에 적절한 싱크 개체를 구현합니다. COPaper의 컨텍스트에서 StoClien 이 구현하는 중요한 싱크 개체는 IPaperSink 인터페이스를 노출합니다. COPaper에서 CoPaper의 다양한 이벤트를 StoClien 에 알리는 데 사용하는 나가는 인터페이스입니다.

다음은 IPAPER의 IPaperSink 메서드에 대한 요약입니다. \INC 형제 디렉터리의 H입니다.

메서드 설명
잠김 클라이언트가 용지를 제어하고 잠갔습니다.
잠금 해제됨 클라이언트가 용지의 제어를 포기했습니다.
로드됨 클라이언트가 자체 복합 파일에서 용지 콘텐츠를 로드했습니다.
저장됨 클라이언트가 종이 콘텐츠를 자체 복합 파일에 저장했습니다.
InkStart 클라이언트가 용지에 색 잉크 그리기 시퀀스를 시작했습니다.
InkDraw 클라이언트가 종이 표면에 잉크 데이터 요소를 배치하고 있습니다.
InkStop 클라이언트가 용지에 대한 잉크 그리기 시퀀스를 중지했습니다.
삭제 클라이언트가 용지에서 모든 잉크 데이터를 지웠습니다.
조정할 클라이언트가 용지의 크기를 조정했습니다.

 

이러한 메서드는 대체로 설명이 없습니다. 싱크는 이러한 모든 메서드를 어떤 방식으로 구현해야 하지만 많은 메서드가 스텁으로 구현되며 StoServe/StoClien 샘플에서 사용되지 않습니다.

이러한 샘플에서 사용되는 중요한 방법은 Loaded 메서드입니다. COPaper가 파일에서 새 드로잉을 로드하라는 클라이언트의 지시를 받으면 새 데이터가 로드될 때 클라이언트에 알리는 방법이 필요합니다. 이를 위해 COPaper는 클라이언트 싱크에서 IPaperSink::Loaded 를 호출합니다. 그런 다음, 클라이언트는 IPaper::Redraw 를 호출하여 COPaper가 새 데이터를 클라이언트에 재생하도록 요청할 수 있습니다. 다시 그리면 클라이언트의 디스플레이에 로드된 드로잉이 다시 그려집니다. 로드가 완료되면 새로 로드된 드로잉이 클라이언트에서 제공하는 창에 자동으로 표시됩니다.

IPaperSink에 대한 이 IPaper 메서드의 연결에 대한 자세한 내용은 IPaper::Redraw를 참조하세요.

IPaperSink 메서드 InkStart, InkDrawInkStop은 개별 잉크 데이터 패킷을 클라이언트로 다시 보내는 데 사용됩니다. 수신 시 클라이언트는 원래 COPaper로 보냈을 때와 동일한 방식으로 디스플레이에 페인트를 칠합니다. 위의 논리는 모두 동일한 CONNPOINT_PAPERSINK 연결 지점에서 수신 대기하는 여러 클라이언트를 허용하기에 충분합니다. 이러한 클라이언트에서 공통 COPaper instance 공유한 경우 모두 이 연결점에 연결하여 동일한 드로잉을 표시할 수 있습니다.