Persistenzschnittstellen

Objekte mit einem persistenten Zustand jeder Art müssen mindestens eine IPersist-Schnittstelle und vorzugsweise mehrere Schnittstellen implementieren, um dem Container die flexibelste Auswahl zu bieten, wie er den Zustand eines Steuerelements speichern * möchte.

Wenn ein Steuerelement einen dauerhaften Zustand hat, muss es mindestens IPersistStream oder IPersistStreamInit implementieren (die beiden schließen sich gegenseitig aus und sollten zum größten Teil nicht zusammen implementiert werden). Letzteres wird verwendet, wenn ein Steuerelement wissen möchte, wann es neu erstellt wird, anstatt aus einem vorhandenen persistenten Zustand neu geladen zu werden (IPersistStream verfügt nicht über die erstellte neue Funktion). The existence of either interface indicates that the control can save and load its persistent state into a stream, that is, an instance of IStream.

Über diese beiden streambasierten Schnittstellen hinaus können die in der folgenden Tabelle aufgeführten IPersist-Schnittstellen optional bereitgestellt werden, um Persistenz an anderen Speicherorten als einem erweiterbaren IStream zu * unterstützen.

Ein Satz von Komponentenkategorien wird identifiziert, um die Unterstützung für Persistenzschnittstellen zu decken. Weitere Informationen finden Sie unter Komponentenkategorien.

Schnittstelle Verbrauch
IPersistMemory
Das Objekt kann seinen Zustand speichern und in ein sequenzielles Bytearray mit fester Länge (im Arbeitsspeicher) laden.
IPersistStorage
Das Objekt kann seinen Zustand speichern und in eine IStorage-Instanz laden. Steuerelemente, die als Insertable als andere zusammengesetzte Dokumentobjekte (zum Einfügen in nicht steuerelementfähige Container) markiert werden sollen, müssen diese Schnittstelle unterstützen.
IPersistPropertyBag
Das Objekt kann seinen Zustand als einzelne Eigenschaften speichern und laden, die in den vom Container implementierten IPropertyBag geschrieben werden. Dies wird für die Funktion "Als Text speichern" in einigen Containern verwendet.
IPersistMoniker
Das Objekt kann seinen Zustand speichern und an einen Speicherort laden, der von einem Moniker benannt wird. Das Steuerelement ruft IMoniker::BindToStorage auf, um die benötigten Speicherschnittstellen abzurufen, z. B. IStorage, IStream, ILockBytes, IDataObjectusw.

Die Unterstützung für IPersistPropertyBag ist zwar optional, wird jedoch dringend als Optimierung für Container mit Funktionen zum Speichern unter Text empfohlen, z. B. Visual Basic.

Mit Ausnahme von IPersistStream::GetSizeMax, IPersistStreamInit::GetSizeMaxund IPersistMemory::GetSizeMaxmüssen alle Methoden jeder Schnittstelle vollständig implementiert werden.

Steuerelemente