Udostępnij za pośrednictwem


Wytrwałość

Kontrolka implementuje co najmniej jeden interfejs trwałości, aby obsługiwać trwałość stanu. Na przykład interfejs IPersistStreamInit obsługuje trwałość opartą na strumieniu stanu kontrolki. IPersistStreamInit zastępuje IPersistStream i dodaje metodę inicjowania, InitNew. Inne metody są takie same w obu interfejsach. IPersistStreamInit nie pochodzi z IPersistStream; obiekt obsługuje tylko jeden z dwóch interfejsów na podstawie tego, czy wymaga możliwości zainicjowania nowych wystąpień samego siebie.

Inne interfejsy trwałości oferowane przez kontrolkę to: IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker. Implementator kontrolek musi zdecydować, jakie rodzaje trwałości są najważniejsze i zaimplementować odpowiednie interfejsy trwałości. Implementator kontrolek decyduje również o tym, co należy zapisać. Na przykład kontrolka może zapisywać bieżące wartości właściwości lub jego lokalizacji i rozmiaru w kontenerze. Klient decyduje, który interfejs woli użyć.

Przed załadowaniem kontrolki ze stanu trwałego klient może sprawdzić flagę OLEMISC_SETCLIENTSITEFIRST, aby określić, czy kontrolka obsługuje pobieranie jej lokacji klienta i właściwości otoczenia przed załadowaniem stanu trwałego. Ta optymalizacja może zaoszczędzić czas podczas tworzenia wystąpienia kontrolki, ponieważ kontrolka jest wolna od ignorowania jego trwałych wartości, a nie ładowania ich tylko w celu zastąpienia ich przez właściwości otoczenia dostarczone przez klienta.

Kontrolka może również obsługiwać zapisywanie i przywracanie stanu w zestawie właściwości OLE, zestaw identyfikatorów i wartości w określonym formacie. Ta funkcja może być przydatna w przypadku kontenerów, takich jak Visual Basic, która zapisuje swoje programy w postaci tekstowej. Kontrolka, która chce obsługiwać tę funkcję, implementuje IDataObject::GetData i IDataObject::SetData, aby przekazać jej wartości właściwości do i z kontenera. Jest to zadanie kontenera, aby przekonwertować te informacje na tekst i zapisać je. Identyfikatory używane przez kontrolkę odpowiadają nazwom właściwości kontrolki i wartościom. Zobacz zestaw OLE CDK, aby uzyskać definicję tego zestawu właściwości.

kontrolek ActiveX