지속성 인터페이스

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

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

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

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

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

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

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

컨트롤