Share via


Persistenza

Un controllo implementa una o più interfacce di persistenza per supportare la persistenza dello stato. Ad esempio, l'interfaccia IPersistStreamInit supporta la persistenza basata su flusso dello stato del controllo. IPersistStreamInit è una sostituzione di IPersistStream e aggiunge un metodo di inizializzazione, InitNew. Gli altri metodi sono gli stessi in entrambe le interfacce. IPersistStreamInit non è derivato da IPersistStream. Un oggetto supporta solo una delle due interfacce in base al fatto che richieda la possibilità di inizializzare nuove istanze di se stesso.

Altre interfacce di persistenza che un controllo può offrire includono: IPersist Archiviazione, IPersistMemory, IPersistPropertyBag, IPersistMoniker. L'implementatore del controllo deve decidere quali tipi di persistenza sono più importanti e implementare le interfacce di persistenza appropriate. L'implementatore del controllo decide anche cosa salvare. Ad esempio, un controllo può salvare i valori correnti delle relative proprietà o la relativa posizione e dimensione all'interno del contenitore. Il client decide quale interfaccia preferisce usare.

Prima di caricare un controllo dallo stato permanente, un client può controllare il flag OLEMISC_edizione Standard TCLIENTSITEFIRST per determinare se il controllo supporta il recupero del sito client e delle proprietà di ambiente prima di caricarne lo stato permanente. Questa ottimizzazione consente di risparmiare tempo durante la creazione di un'istanza di un controllo poiché il controllo è quindi libero di ignorare i valori persistenti anziché caricarli solo per eseguirne l'override dalle proprietà di ambiente fornite dal client.

Un controllo può anche supportare il salvataggio e il ripristino dello stato in un set di proprietà OLE, un set di identificatori e valori in un formato specificato. Questa funzionalità può essere utile con contenitori come Visual Basic, che salva i programmi in un formato testuale. Un controllo che vuole supportare questa funzionalità implementa rispettivamente IDataObject::GetData e IDataObject::SetData per passare i valori delle proprietà rispettivamente da e verso il contenitore. Si tratta del processo del contenitore per convertire queste informazioni in testo e salvarle. Gli identificatori utilizzati dal controllo corrispondono ai nomi delle proprietà del controllo e ai valori. Per la definizione di questo set di proprietà, vedere OLE CDK.

Controlli ActiveX