지속성 인터페이스

모든 종류의 영구 상태를 가진 개체는 컨트롤의 상태를 저장하는 방법을 가장 유연하게 선택할 수 있도록 컨테이너에 제공하기 위해 하나 이상의 IPersist* 인터페이스와 여러 인터페이스를 구현해야 합니다.

컨트롤에 영구 상태가 있는 경우 최소한 IPersistStream 또는 IPersistStreamInit를 구현해야 합니다(둘은 상호 배타적이고 대부분의 경우 함께 구현되어서는 안 됨). 후자는 컨트롤이 기존 영구 상태에서 다시 로드되는 것이 아니라 새 컨트롤이 생성되는 시기를 알고자 할 때 사용됩니다(IPersistStream 에 생성된 새 기능이 없음). 두 인터페이스 중 하나의 존재는 컨트롤이 영구 상태를 저장하고 스트림, 즉 IStream의 instance 로드할 수 있음을 나타냅니다.

이러한 두 스트림 기반 인터페이스 외에도 확장 가능한 IStream 이외의 위치에 대한 지속성을 지원하기 위해 다음 표에 나열된 IPersist* 인터페이스를 선택적으로 제공할 수 있습니다.

지속성 인터페이스에 대한 지원을 포함하도록 구성 요소 범주 집합이 식별됩니다. 구성 요소 범주를 참조하세요.

인터페이스 사용량
IPersistMemory
개체는 상태를 저장하고 고정 길이 순차 바이트 배열(메모리)에 로드할 수 있습니다.
IPersistStorage
개체는 상태를 저장하고 IStorage instance 로드할 수 있습니다. Insertable을 다른 복합 문서 개체로 표시하려는 컨트롤(비제어 인식 컨테이너에 삽입)은 이 인터페이스를 지원해야 합니다.
IPersistPropertyBag
개체는 컨테이너가 구현하는 IPropertyBag에 기록된 개별 속성으로 상태를 저장하고 로드할 수 있습니다. 이는 일부 컨테이너의 텍스트로 저장 기능에 사용됩니다.
IPersistMoniker
개체는 상태를 저장하고 모니커가 명명한 위치에 로드할 수 있습니다. 컨트롤은 IMoniker::BindToStorage를 호출하여 필요한 스토리지 인터페이스(예: IStorage, IStream, ILockBytes, IDataObject 등)를 검색합니다.

IPersistPropertyBag에 대한 지원은 선택 사항이지만 Visual Basic과 같은 텍스트로 저장 기능을 사용하는 컨테이너에 대한 최적화로 사용하는 것이 좋습니다.

IPersistStream::GetSizeMax, IPersistStreamInit::GetSizeMaxIPersistMemory::GetSizeMax를 제외하고 각 인터페이스의 모든 메서드가 완전히 구현되어야 합니다.

컨트롤