Persistensi

Kontrol mengimplementasikan satu atau beberapa antarmuka persistensi untuk mendukung kegigihan statusnya. Misalnya, antarmuka IPersistStreamInit mendukung persistensi berbasis aliran dari status kontrol. IPersistStreamInit adalah pengganti IPersistStream dan menambahkan metode inisialisasi, InitNew. Metode lain sama di kedua antarmuka. IPersistStreamInit tidak berasal dari IPersistStream; objek hanya mendukung salah satu dari dua antarmuka berdasarkan apakah memerlukan kemampuan untuk menginisialisasi instans baru itu sendiri.

Antarmuka persistensi lain yang dapat ditawarkan kontrol meliputi: IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker. Pelaksana kontrol harus memutuskan jenis persistensi apa yang paling penting dan menerapkan antarmuka persistensi yang sesuai. Pelaksana kontrol juga memutuskan apa yang harus disimpan. Misalnya, kontrol dapat menyimpan nilai properti saat ini atau lokasi dan ukurannya dalam kontainernya. Klien memutuskan antarmuka mana yang lebih suka digunakan.

Sebelum memuat kontrol dari status persistennya, klien dapat memeriksa bendera OLEMISC_SETCLIENTSITEFIRST untuk menentukan apakah kontrol mendukung mendapatkan situs klien dan properti sekitarnya sebelum memuat status persistennya. Pengoptimalan ini dapat menghemat waktu saat membuat instans kontrol karena kontrol kemudian bebas untuk mengabaikan nilai persistennya daripada memuatnya hanya agar ditimpa oleh properti sekitar yang disediakan oleh klien.

Kontrol juga dapat mendukung penyimpanan dan pemulihan statusnya dalam kumpulan properti OLE, sekumpulan pengidentifikasi dan nilai dalam format tertentu. Fitur ini dapat berguna dengan kontainer seperti Visual Basic, yang menyimpan programnya dalam bentuk tekstual. Kontrol yang ingin mendukung fitur ini mengimplementasikan IDataObject::GetData dan IDataObject::SetData untuk meneruskan nilai propertinya ke dan dari kontainer. Ini adalah tugas kontainer untuk mengonversi informasi ini menjadi teks dan menyimpannya. Pengidentifikasi yang digunakan oleh kontrol sesuai dengan nama properti kontrol dan nilai. Lihat OLE CDK untuk definisi kumpulan properti ini.

Kontrol ActiveX