Perzistence
Ovládací prvek implementuje jedno nebo více rozhraní trvalosti pro podporu trvalosti jeho stavu. Například rozhraní IPersistStreamInit podporuje trvalost stavu ovládacího prvku na základě datového proudu. IPersistStreamInit je náhradou za IPersistStream a přidá metodu inicializace InitNew. Ostatní metody jsou v obou rozhraních stejné. IPersistStreamInit není odvozen od IPersistStream; objekt podporuje pouze jedno ze dvou rozhraní na základě toho, zda vyžaduje schopnost inicializovat nové instance sebe sama.
Mezi další rozhraní trvalosti, která může ovládací prvek nabídnout, patří: IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker. Implementátor ovládacího prvku musí rozhodnout, jaké druhy trvalosti jsou nejdůležitější, a implementovat příslušná rozhraní trvalosti. Implementátor ovládacího prvku také rozhodne, co se má uložit. Ovládací prvek může například uložit aktuální hodnoty jeho vlastností nebo umístění a velikosti v rámci kontejneru. Klient rozhodne, které rozhraní preferuje.
Před načtením ovládacího prvku z trvalého stavu může klient zkontrolovat příznak OLEMISC_SETCLIENTSITEFIRST a určit, jestli ovládací prvek podporuje získání vlastností jeho klientské lokality a okolí před načtením jeho trvalého stavu. Tato optimalizace může ušetřit čas při vytváření instance ovládacího prvku, protože ovládací prvek je pak volný, aby ignoroval jeho trvalé hodnoty a nenačítal je pouze tak, aby je přepsaly okolní vlastnosti zadané klientem.
Ovládací prvek může také podporovat ukládání a obnovení jeho stavu v sadě vlastností OLE, sadu identifikátorů a hodnot v zadaném formátu. Tato funkce může být užitečná pro kontejnery, jako je Visual Basic, která ukládá své programy v textové podobě. Ovládací prvek, který chce tuto funkci podporovat, implementuje IDataObject::GetData a IDataObject::SetData předat jeho hodnoty vlastností do kontejneru a z kontejneru. Jedná se o úlohu kontejneru, která tyto informace převede na text a uloží je. Identifikátory používané ovládacím prvku odpovídají názvům vlastností ovládacího prvku a hodnotám. Viz OLE CDK pro definici této sady vlastností.
Související témata