Antarmuka Persistensi

Objek yang memiliki status persisten dalam bentuk apa pun harus menerapkan setidaknya satu antarmuka IPersist*, dan sebaiknya beberapa antarmuka, untuk menyediakan kontainer dengan pilihan yang paling fleksibel tentang bagaimana ia ingin menyimpan status kontrol.

Jika kontrol memiliki status persisten apa pun, kontrol harus, minimum, menerapkan IPersistStream atau IPersistStreamInit (keduanya saling eksklusif dan tidak boleh diimplementasikan bersama-sama untuk sebagian besar). Yang terakhir digunakan ketika kontrol ingin mengetahui kapan kontrol dibuat baru dibandingkan dengan dimuat ulang dari status persisten yang ada (IPersistStream tidak memiliki kemampuan baru yang dibuat). Keberadaan salah satu antarmuka menunjukkan bahwa kontrol dapat menyimpan dan memuat status persistennya ke dalam aliran, yaitu, instans IStream.

Di luar dua antarmuka berbasis aliran ini, antarmuka IPersist* yang tercantum dalam tabel berikut dapat disediakan secara opsional untuk mendukung persistensi ke lokasi selain IStream yang dapat diperluas.

Sekumpulan kategori komponen diidentifikasi untuk mencakup dukungan untuk antarmuka persistensi, lihat Kategori Komponen.

Antarmuka Penggunaan
IPersistMemory
Objek dapat menyimpan dan memuat statusnya ke dalam array byte berurutan panjang tetap (dalam memori).
IPersistStorage
Objek dapat menyimpan dan memuat statusnya ke dalam instans IStorage . Kontrol yang ingin ditandai Dapat Disisipkan sebagai objek dokumen campuran lainnya (untuk penyisipan ke dalam kontainer sadar non-kontrol) harus mendukung antarmuka ini.
IPersistPropertyBag
Objek dapat menyimpan dan memuat statusnya sebagai properti individual yang ditulis ke IPropertyBag yang diterapkan kontainer. Ini digunakan untuk fungsionalitas Simpan Sebagai Teks dalam beberapa kontainer.
IPersistMoniker
Objek dapat menyimpan dan memuat statusnya ke lokasi yang dinamai oleh moniker. Kontrol memanggil IMoniker::BindToStorage untuk mengambil antarmuka penyimpanan yang diperlukan, seperti IStorage, IStream, ILockBytes, IDataObject, dll.

Meskipun dukungan untuk IPersistPropertyBag bersifat opsional, sangat disarankan sebagai pengoptimalan untuk kontainer dengan fitur Simpan Sebagai Teks, seperti Visual Basic.

Dengan pengecualian IPersistStream::GetSizeMax, IPersistStreamInit::GetSizeMax, dan IPersistMemory::GetSizeMax, semua metode dari setiap antarmuka harus sepenuhnya diimplementasikan.

Kontrol