Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Obiekty, które mają trwały stan każdego rodzaju, muszą implementować co najmniej jeden interfejs IPersist*, a najlepiej wiele interfejsów, aby zapewnić kontenerowi najbardziej elastyczny wybór sposobu zapisywania stanu kontrolki.
Jeśli kontrolka ma jakikolwiek stan trwały, musi, co najmniej, zaimplementować IPersistStream lub IPersistStreamInit (te dwa wzajemnie wykluczają się i nie powinny być implementowane razem w większości). Ten ostatni jest używany, gdy kontrolka chce wiedzieć, kiedy jest tworzona nowa, w przeciwieństwie do ponownego załadowania z istniejącego stanu trwałego (IPersistStream nie ma utworzonej nowej możliwości). Istnienie dowolnego interfejsu wskazuje, że kontrolka może zapisywać i ładować stan trwały do strumienia, czyli wystąpienie IStream.
Poza tymi dwoma interfejsami opartymi na strumieniu interfejsy IPersist* wymienione w poniższej tabeli można opcjonalnie udostępnić w celu obsługi trwałości lokalizacji innych niż rozszerzalna IStream.
Zestaw kategorii składników jest identyfikowany w celu pokrycia obsługi interfejsów trwałości, zobacz Kategorie składników.
| Interfejs | Zwyczaj |
|---|---|
|
IPersistMemory |
Obiekt może zapisywać i ładować jego stan do tablicy bajtów o stałej długości (w pamięci). |
|
IPersistStorage |
Obiekt może zapisywać i ładować jego stan do wystąpienia IStorage. Kontrolki, które mają być oznaczone jako inne złożone obiekty dokumentów (w przypadku wstawiania do kontenerów niekontrolujących) muszą obsługiwać ten interfejs. |
|
IPersistPropertyBag |
Obiekt może zapisywać i ładować jego stan jako poszczególne właściwości zapisywane w obiekcie IPropertyBag, które implementuje kontener. Jest to używane w przypadku funkcji Zapisz jako tekst w niektórych kontenerach. |
|
IPersistMoniker |
Obiekt może zapisywać i ładować jego stan do lokalizacji o nazwie moniker. Kontrolka wywołuje IMoniker::BindToStorage w celu pobrania wymaganego interfejsu magazynu, takiego jak IStorage, IStream, ILockBytes, IDataObjectitp. |
Chociaż obsługa IPersistPropertyBag jest opcjonalna, zdecydowanie zaleca się optymalizację kontenerów z funkcjami Zapisz jako tekst, takimi jak Visual Basic.
Z wyjątkiem IPersistStream::GetSizeMax, IPersistStreamInit::GetSizeMaxi IPersistMemory::GetSizeMax, wszystkie metody każdego interfejsu muszą być w pełni zaimplementowane.