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