Прочитать на английском

Поделиться через


Сохраняемость

Элемент управления реализует один или несколько интерфейсов сохраняемости для поддержки сохраняемости состояния. Например, интерфейс IPersistStreamInit поддерживает сохранение состояния элемента управления на основе потока. IPersistStreamInit является заменой IPersistStream и добавляет метод инициализации InitNew. Другие методы одинаковы в обоих интерфейсах. IPersistStreamInit не является производным от IPersistStream; объект поддерживает только один из двух интерфейсов на основе необходимости инициализировать новые экземпляры.

Другие интерфейсы сохраняемости, которые могут предложить элемент управления: IPersist служба хранилища, IPersistMemory, IPersistPropertyBag, IPersistMoniker. Реализутель элементов управления должен решить, какие виды сохраняемости являются наиболее важными и реализовать соответствующие интерфейсы сохраняемости. Средство реализации элемента управления также решает, что сохранить. Например, элемент управления может сохранить текущие значения его свойств или его расположения и размера в контейнере. Клиент решает, какой интерфейс он предпочитает использовать.

Перед загрузкой элемента управления из постоянного состояния клиент может проверка флаг OLEMISC_SETCLIENTSITEFIRST, чтобы определить, поддерживает ли элемент управления получение клиентских сайтов и внешних свойств перед загрузкой постоянного состояния. Эта оптимизация может сэкономить время при создании экземпляра элемента управления, так как элемент управления затем может игнорировать свои постоянные значения, а не загружать их только для переопределения внешними свойствами, предоставленными клиентом.

Элемент управления также может поддерживать сохранение и восстановление состояния в наборе свойств OLE, набор идентификаторов и значений в указанном формате. Эта функция может быть полезна с контейнерами, такими как Visual Basic, которая сохраняет свои программы в текстовой форме. Элемент управления, который хочет поддерживать эту функцию, реализует IDataObject::GetData и IDataObject::SetData для передачи значений свойств в контейнер и из контейнера соответственно. Это задание контейнера для преобразования этих сведений в текст и его сохранения. Идентификаторы, используемые элементом управления, соответствуют именам свойств элемента управления и значениям. Сведения об определении этого набора свойств см. в OLE CDK.

Элементы управления ActiveX