Persistência
Um controle implementa uma ou mais de várias interfaces de persistência para dar suporte à persistência de seu estado. Por exemplo, a interface deIPersistStreamInit dá suporte à persistência baseada em fluxo do estado do controle. IPersistStreamInit é um substituto para IPersistStream e adiciona um método de inicialização, InitNew. Os outros métodos são os mesmos em ambas as interfaces. IPersistStreamInit não é derivado de IPersistStream; um objeto dá suporte apenas a uma das duas interfaces com base em se ele requer a capacidade de inicializar novas instâncias de si mesmo.
Outras interfaces de persistência que um controle pode oferecer incluem: IPersistStorage, IPersistMemory, IPersistPropertyBag, IPersistMoniker. O implementador de controle deve decidir quais tipos de persistência são mais importantes e implementar as interfaces de persistência apropriadas. O implementador de controle também decide o que salvar. Por exemplo, um controle pode salvar os valores atuais de suas propriedades ou sua localização e tamanho em seu contêiner. O cliente decide qual interface prefere usar.
Antes de carregar um controle de seu estado persistente, um cliente pode verificar o sinalizador de OLEMISC_SETCLIENTSITEFIRST para determinar se o controle dá suporte à obtenção de seu site cliente e propriedades ambientes antes de carregar seu estado persistente. Essa otimização pode economizar tempo ao instanciar um controle, pois o controle é livre para ignorar seus valores persistentes em vez de carregá-los apenas para que eles sejam substituídos por propriedades ambiente fornecidas pelo cliente.
Um controle também pode dar suporte para salvar e restaurar seu estado em um conjunto de propriedades OLE, um conjunto de identificadores e valores em um formato especificado. Esse recurso pode ser útil com contêineres como o Visual Basic, que salva seus programas em uma forma textual. Um controle que deseja dar suporte a esse recurso implementa IDataObject::GetData e IDataObject::SetData para passar seus valores de propriedade de e para o contêiner, respectivamente. É trabalho do contêiner converter essas informações em texto e salvá-la. Os identificadores usados pelo controle correspondem aos nomes de propriedade do controle e aos valores. Consulte a CDK OLE para obter a definição desse conjunto de propriedades.
Tópicos relacionados