次の方法で共有


コンパートメント

コンパートメントの種類

コンパートメントにはさまざまな種類があります。 グローバル コンパートメントがあり、各スレッド マネージャー、ドキュメント マネージャー、コンテキストにはコンパートメントを含めることができます。

グローバル コンパートメントを使用すると、クライアントはプロセス間でデータを共有できます。 グローバル コンパートメント マネージャーを取得するには、ITfThreadMgr::GetGlobalCompartmentを呼び出します。

スレッド マネージャーには、スレッドごとにコンパートメントを含むコンパートメント マネージャーが含まれています。 これにより、スレッド内でデータを共有できます。 スレッド マネージャー コンパートメント マネージャーを取得するには、IID_ITfCompartmentMgr ITfThreadMgr::QueryInterface を呼び出します。

作成された各ドキュメント マネージャーには、コンパートメント マネージャーも含まれています。 これにより、特定のドキュメント マネージャー内でデータを共有できます。 ドキュメント マネージャー コンパートメント マネージャーを取得するには、IID_ITfCompartmentMgr ITfDocumentMgr::QueryInterface を呼び出します。

作成された各コンテキストには、コンパートメント マネージャーも含まれます。 これにより、特定のコンテキスト内でデータを共有できます。 コンテキスト コンパートメント マネージャーを取得するには、IID_ITfCompartmentMgr ITfContext::QueryInterface を呼び出します。

コンパートメントの作成と削除

コンパートメント GUID を使用 ITfCompartmentMgr::GetCompartment が初めて呼び出されるときに、コンパートメントが作成されます。 インストールクライアントは、ITfCompartment::SetValueを使用してコンパートメントの初期値を設定する必要があります。 値が設定されるまで、コンパートメント値は空です。 このため、GetCompartment が呼び出される前にコンパートメント 存在したことを確認する方法はありません。 このような状況を回避するには、他のクライアントがコンパートメントが既に存在するかどうかを判断できるように、インストールしているクライアントが値を何らかの初期値に設定する必要があります。

ITfCompartmentMgr::ClearCompartment メソッドを使用してコンパートメントを削除します。 コンパートメントへの既存の参照は無効としてマークされます。

コンパートメントの取得

ITfCompartmentMgr インターフェイスを使用して、クライアントは ITfCompartmentMgr::EnumCompartments呼び出すことによってコンパートメントを列挙できます。 このメソッドは、インストールされているすべてのコンパートメントの GUID を含む IEnumGUID オブジェクトを提供します。

コンパートメント GUID を使用して、ITfCompartmentMgr::GetCompartment を使用して、特定のコンパートメントを取得します。 このメソッドは、コンパートメント データを取得および設定できる ITfCompartment オブジェクトを呼び出し元に提供します。

コンパートメント変更通知の受信

コンパートメントの値が変更されると、TSF マネージャーは、コンパートメントが変更されたことをインストール済みのアドバイズ シンクに通知します。 コンパートメント変更アドバイズ シンクをインストールするには、ITfCompartmentEventSink実装するオブジェクトを作成します。 次 iTfCompartment::QueryInterface を呼び出し、監視対象のコンパートメント オブジェクトのIID_ITfSourceを使用して、ITfSource インターフェイスを取得します。 IID_ITfCompartmentEventSinkと ITfCompartmentEventSink オブジェクトへのポインターを使用して、ITfSource::AdviseSink呼び出します。 コンパートメントの値が変更されると、アドバイズ シンクの ITfCompartmentEventSink::OnChange がコンパートメントの GUID で呼び出されます。 アドバイズ シンク ITfCompartment::GetValue を呼び出して新しい値を取得できます。

ITfCompartmentMgr

ITfCompartment

ITfCompartmentEventSink

TfClientIdする

ITfThreadMgr::GetGlobalCompartment

ITfCompartmentMgr::GetCompartment

ITfCompartment::SetValue

ITfCompartmentMgr::ClearCompartment

ITfCompartmentMgr::EnumCompartments

ITfSource

ITfSource::AdviseSink

ITfCompartmentEventSink::OnChange