지 속성 인터페이스

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

컨트롤에 영구 상태가 없는 경우에는 최소한 IPersistStream 또는 IPersistStreamInit 을 구현 해야 합니다 .이 두 클래스는 함께 사용할 수 없으며 대부분의 부분에 대해 함께 구현 되어서는 안 됩니다. 후자는 기존 영구 상태에서 다시 로드 되는 것과는 반대로, 컨트롤이 새로 만들어진 시기를 알아야 하는 경우에 사용 됩니다.IPersistStream 에는 새 기능이 생성 되지 않습니다. 두 인터페이스 중 하나는 컨트롤이 영구 상태를 저장 하 고이를 IStream의 인스턴스로 로드할 수 있음을 나타냅니다.

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

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

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

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

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

컨트롤