Persistenz

Ein Steuerelement implementiert mindestens eine von mehreren Persistenzschnittstellen, um die Persistenz des Zustands zu unterstützen. Die IPersistStreamInit-Schnittstelle unterstützt beispielsweise 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 wird nicht von IPersistStream abgeleitet. Ein -Objekt unterstützt nur eine der beiden Schnittstellen, basierend darauf, ob es die Möglichkeit erfordert, neue Instanzen von sich selbst zu initialisieren.

Weitere Persistenzschnittstellen, die ein Steuerelement bieten kann, sind: IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker. Der Implementer des Steuerelements muss entscheiden, welche Arten von Persistenz am wichtigsten sind, und die entsprechenden Persistenzschnittstellen implementieren. Der Implementer des Steuerelements entscheidet auch, was zu speichern ist. Beispielsweise kann ein Steuerelement die aktuellen Werte seiner Eigenschaften oder seine Position und Größe in seinem Container speichern. Der Client entscheidet, welche Schnittstelle er bevorzugt.

Vor dem Laden eines Steuerelements aus seinem persistenten Zustand kann ein Client das OLEMISC SETCLIENTSITEFIRST-Flag überprüfen, um zu bestimmen, ob das Steuerelement das Abrufen seiner Clientstandort- und Umgebungseigenschaften unterstützt, bevor der persistente Zustand geladen _ wird. 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 umgebungseigenschaften überschrieben werden, die vom Client bereitgestellt werden.

Ein Steuerelement kann auch das Speichern und Wiederherstellen seines Zustands in einem OLE-Eigenschaftensatz, einem Satz von Bezeichnern und Werten in einem angegebenen Format, unterstützen. Dieses Feature kann bei Containern wie Visual Basic nützlich sein, die seine Programme in Textform speichern. Ein Steuerelement, das dieses Feature unterstützen möchte, implementiert IDataObject::GetData und IDataObject::SetData, um ihre Eigenschaftswerte an den 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 Eigenschaftensets finden Sie im OLE CDK.

ActiveX-Steuerelemente