Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Objekte mit einem beständigen Zustand jeder Art müssen mindestens eine IPersist*-Schnittstelle und vorzugsweise mehrere Schnittstellen implementieren, um dem Container die flexibelste Wahl zu bieten, wie der Zustand eines Steuerelements gespeichert werden soll.
Wenn ein Steuerelement über einen dauerhaften Zustand verfügt, muss es mindestens IPersistStream oder IPersistStreamInit implementieren (die beiden schließen sich gegenseitig aus und sollten größtenteils 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 zu laden (IPersistStream nicht über die erstellte neue Funktion verfügt). Das Vorhandensein einer der beiden Schnittstellen gibt an, dass das Steuerelement seinen beständigen Zustand in einem Datenstrom speichern und laden kann, d. h. eine Instanz von IStream-.
Über diese beiden streambasierten Schnittstellen hinaus können optional die in der folgenden Tabelle aufgeführten IPersist*-Schnittstellen bereitgestellt werden, um Persistenz an anderen Standorten als einem erweiterbaren IStream-zu unterstützen.
Eine Reihe von Komponentenkategorien wird identifiziert, um die Unterstützung für Persistenzschnittstellen abzudecken, siehe Komponentenkategorien.
| Schnittstelle | Verwendung |
|---|---|
|
IPersistMemory |
Das Objekt kann seinen Zustand in einem sequenziellen Bytearray (im Arbeitsspeicher) mit fester Länge speichern und laden. |
|
IPersistStorage |
Das Objekt kann seinen Zustand in einer IStorage-instanz speichern und laden. Steuerelemente, die als "Einfügen" als andere zusammengesetzte Dokumentobjekte gekennzeichnet werden möchten (zum Einfügen in nicht steuerelementfähige Container), müssen diese Schnittstelle unterstützen. |
|
IPersistPropertyBag |
Das Objekt kann seinen Zustand als einzelne Eigenschaften speichern und laden, die in IPropertyBag geschrieben wurden, die der Container implementiert. Dies wird für die Funktion "Als Text speichern" in einigen Containern verwendet. |
|
IPersistMoniker |
Das Objekt kann seinen Zustand an einem Ort speichern und laden, der von einem Moniker benannt ist. Das Steuerelement ruft IMoniker::BindToStorage zum Abrufen der benötigten Speicherschnittstelle auf, z. B. IStorage, IStream, ILockBytes, IDataObjectusw. |
Während die Unterstützung für IPersistPropertyBag optional ist, wird es dringend als Optimierung für Container mit "Speichern unter Text"-Features wie Visual Basic empfohlen.
Mit Ausnahme von IPersistStream::GetSizeMax, IPersistStreamInit::GetSizeMaxund IPersistMemory::GetSizeMaxmüssen alle Methoden jeder Schnittstelle vollständig implementiert werden.