次の方法で共有


固執

コントロールは、その状態の永続化をサポートするために、複数の永続化インターフェイスの 1 つ以上を実装します。 たとえば、IPersistStreamInit インターフェイスは、コントロールの状態のストリーム ベースの永続化をサポートします。 IPersistStreamInit は、IPersistStream の代わりであり、初期化メソッド InitNewを追加します。 他のメソッドは、両方のインターフェイスで同じです。 IPersistStreamInit は IPersistStream から派生。オブジェクトは、それ自体の新しいインスタンスを初期化する機能が必要かどうかに基づいて、2 つのインターフェイスのうちの 1 つだけをサポートします。

コントロールが提供できるその他の永続化インターフェイスには、IPersistStorageIPersistMemoryIPersistPropertyBagIPersistMonikerが含まれます。 コントロールの実装者は、最も重要な永続化の種類を決定し、適切な永続化インターフェイスを実装する必要があります。 コントロールの実装者は、保存する内容も決定します。 たとえば、コントロールは、そのプロパティの現在の値、またはそのコンテナー内の場所とサイズを保存できます。 クライアントは、使用するインターフェイスを決定します。

永続的な状態からコントロールを読み込む前に、クライアントはOLEMISC_SETCLIENTSITEFIRST フラグを確認して、コントロールが永続的な状態を読み込む前に、クライアント サイトとアンビエント プロパティの取得をサポートしているかどうかを判断できます。 この最適化により、コントロールをインスタンス化するときに時間を節約できます。コントロールは、クライアントによって提供されるアンビエント プロパティによってオーバーライドされるためだけに値を読み込むのではなく、永続的な値を自由に無視できるためです。

コントロールは、OLE プロパティ セット、指定した形式の識別子と値のセットでの状態の保存と復元をサポートすることもできます。 この機能は、プログラムをテキスト形式で保存する Visual Basic などのコンテナーで役立ちます。 この機能をサポートするコントロールは、IDataObject::GetData実装し、IDataObject::SetDataして、コンテナーとの間でプロパティ値を渡します。 この情報をテキストに変換して保存するのは、コンテナーのジョブです。 コントロールで使用される識別子は、コントロールのプロパティ名と値に対応します。 このプロパティ セットの定義については、OLE CDK を参照してください。

ActiveX コントロール