Persistenz

Ein Steuerelement implementiert eine oder mehrere von mehreren Persistenzschnittstellen, um die Persistenz seines Zustands zu unterstützen. Beispielsweise unterstützt die IPersistStreamInit-Schnittstelle die streambasierte Persistenz des Zustands des Steuerelements. IPersistStreamInit ist ein Ersatz für IPersistStream und fügt die Initialisierungsmethode InitNew hinzu. Die anderen Methoden sind in beiden Schnittstellen identisch. IPersistStreamInit ist nicht von IPersistStream abgeleitet; Ein -Objekt unterstützt nur eine der beiden Schnittstellen, je nachdem, ob es die Fähigkeit erfordert, neue Instanzen von sich selbst zu initialisieren.

Weitere Persistenzschnittstellen, die ein Steuerelement anbieten kann, sind: IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker. Der Steuerungsimplementierer muss entscheiden, welche Arten von Persistenz am wichtigsten sind, und die entsprechenden Persistenzschnittstellen implementieren. Der Steuerelementimplementierer entscheidet auch, was gespeichert werden soll. Beispielsweise kann ein Steuerelement die aktuellen Werte seiner Eigenschaften oder seines Speicherorts und seiner Größe innerhalb des Containers speichern. Der Client entscheidet, welche Schnittstelle er bevorzugt.

Vor dem Laden eines Steuerelements aus seinem persistenten Zustand kann ein Client das flag OLEMISC_SETCLIENTSITEFIRST überprüfen, um zu ermitteln, ob das Steuerelement das Abrufen seiner Clientstandort- und Ambienteigenschaften vor dem Laden des persistenten Zustands unterstützt. Diese Optimierung kann beim Instanziieren eines Steuerelements Zeit sparen, da das Steuerelement dann seine persistenten Werte ignorieren kann, anstatt sie nur zu laden, damit sie von vom Client bereitgestellten Ambient-Eigenschaften überschrieben werden.

Ein Steuerelement kann auch das Speichern und Wiederherstellen seines Zustands in einem OLE-Eigenschaftssatz unterstützen, einem Satz von Bezeichnern und Werten in einem angegebenen Format. Dieses Feature kann bei Containern wie Visual Basic nützlich sein, das seine Programme in textueller Form speichert. Ein Steuerelement, das dieses Feature unterstützen möchte, implementiert IDataObject::GetData und IDataObject::SetData , um seine Eigenschaftswerte an bzw. aus dem Container zu übergeben. Es ist aufgabe des Containers, diese Informationen in Text zu konvertieren und zu speichern. Die vom Steuerelement verwendeten Bezeichner entsprechen den Eigenschaftennamen des Steuerelements und den Werten. Die Definition dieses Eigenschaftensatzes finden Sie im OLE CDK.

ActiveX-Steuerelemente