Freigeben über


IPaperSink-Methoden

COPaper macht die IConnectionPointContainer-Schnittstelle verfügbar, damit Clients eine Verbindung mit COPaper herstellen können, um Benachrichtigungen zu bestimmten Ereignissen zu erhalten, die in COPaper auftreten. Durch das Verfügbarmachen dieser Schnittstelle wird COPaper zu einem anschließbaren Objekt. Ein Client kann QueryInterface für diese Schnittstelle aufrufen und zum Abrufen der Verbindungspunkte des Objekts verwenden. Die Clientbeteiligung an diesem Schema wird in der zugehörigen StoClien-Stichprobe behandelt.

Im Grunde implementiert der Client eine so genannte Senke in Form eines Senkenobjekts mit einer Senkenschnittstelle. Die Senkenschnittstelle empfängt ausgehende Ereignisbenachrichtigungsaufrufe von COPaper, nachdem die Senke vom Client ordnungsgemäß mit einer COPaper-instance verbunden wurde. Der Client stellt die Verbindung mithilfe eines Verbindungspunktobjekts her, das von COPaper verwaltet wird. Es kann zahlreiche Verbindungspunkte für ein einzelnes verbindungsfähiges COM-Objekt geben. Im StoServe-Beispiel verfügt COPaper nur über einen Verbindungspunkt, der Zeichenpapierereignisse verarbeitet.

Eine beliebige Anzahl von Clients kann eine Verbindung mit einem einzelnen Verbindungspunkt herstellen. Der CONNPOINT_PAPERSINK Verbindungspunkt in COPaper verwaltet eine Gruppe von Verbindungen, die zur Laufzeit dynamisch wachsen können. Die vollständigen Details zur Unterstützung von anschließbaren Objekten von COPaper sind in DATEIEN CONNECT codiert. H und CONNECT. CPP und werden hier nicht behandelt. Die Konstruktion ähnelt dem, was im CONSERVE-Codebeispiel untersucht wurde.

Der StoClien-Client implementiert geeignete Senkenobjekte für die Verbindungspunkte, die er in COPaper finden soll. Aus dem Kontext von COPaper macht das wichtige Senkenobjekt, das StoClien implementiert, die IPaperSink-Schnittstelle verfügbar. Dies ist die ausgehende Schnittstelle, die von COPaper verwendet wird, um StoClien über verschiedene Ereignisse in COPaper zu benachrichtigen.

Hier ist eine Zusammenfassung der Methoden in IPaperSink von IPAPER. H im gleichgeordneten Verzeichnis \INC.

Methode BESCHREIBUNG
Gesperrt Ein Kunde hat die Kontrolle über das Papier übernommen und gesperrt.
Sperre aufgehoben Ein Kunde hat die Kontrolle über das Papier aufgegeben.
Geladen Ein Client hat Papierinhalt aus einer eigenen Verbunddatei geladen.
Gespeichert Ein Client hat Papierinhalt in einer eigenen Verbunddatei gespeichert.
InkStart Ein Client hat eine Farbzeichnungssequenz für das Papier gestartet.
InkDraw Ein Client legt Freihanddatenpunkte auf die Papieroberfläche.
InkStop Ein Kunde hat seine Freihandzeichnungssequenz zum Papier beendet.
Gelöscht Ein Client hat alle Freihanddaten aus dem Papier gelöscht.
Geändert Ein Client hat die Größe des Papiers geändert.

 

Diese Methoden sind weitgehend selbsterklärend. Obwohl die Senke all diese Methoden auf irgendeine Weise implementieren muss, werden viele als Stubs implementiert und nicht in den StoServe/StoClien-Beispielen verwendet.

Eine wichtige Methode, die in diesen Beispielen verwendet wird, ist die Loaded-Methode. Wenn COPaper vom Client angewiesen wird, eine neue Zeichnung aus der Datei zu laden, benötigt es eine Möglichkeit, den Client zu benachrichtigen, wenn die neuen Daten geladen werden. Dazu ruft COPaper IPaperSink::Loaded auf der Clientsenke auf. Der Client kann dann IPaper::Redraw aufrufen, um anzufordern, dass COPaper die neuen Daten an den Client zurückgibt. Die Neuzeichnung bewirkt, dass die geladene Zeichnung in der Anzeige des Clients neu gezeichnet wird. Nach Abschluss des Ladevorgangs wird die neu geladene Zeichnung automatisch in dem vom Client bereitgestellten Fenster angezeigt.

Vollständige Informationen zur Konnektivität dieser IPaper-Methode mit IPaperSink finden Sie unter IPaper::Redraw.

Die IPaperSink-MethodenInkStart, InkDraw und InkStop werden verwendet, um einzelne Freihanddatenpakete zurück an den Client zu senden. An der Rezeption zeichnet der Kunde sie in seiner Anzeige auf die gleiche Weise wie bei der ursprünglichen Übermittlung an COPaper. Die obige Logik ist allgemein genug, um mehrere Clients zuzulassen, die alle auf demselben CONNPOINT_PAPERSINK Verbindungspunkt lauschen. Wenn eine gemeinsame COPaper-instance von diesen Clients gemeinsam genutzt wurde, können sie alle dieselbe Zeichnung anzeigen, indem sie eine Verbindung mit diesem Verbindungspunkt herstellen.