Freigeben über


Fächer

Abteiltypen

Es gibt verschiedene Arten von Fächern. Es gibt ein globales Abteil, und jeder Thread-Manager, Dokument-Manager und Kontext kann ein Fach enthalten.

Mit dem globalen Abteil können Clients Daten prozessübergreifend freigeben. Um den globalen Abteil-Manager abzurufen, rufen Sie ITfThreadMgr::GetGlobalCompartment auf.

Der Thread-Manager enthält einen Abteil-Manager, der Fächer pro Thread enthält. Dadurch können Daten innerhalb eines Threads freigegeben werden. Um einen Thread-Manager zu erhalten, rufen Sie ITfThreadMgr::QueryInterface mit IID_ITfCompartmentMgr auf.

Jeder erstellte Dokument-Manager enthält auch einen Abteil-Manager. Dadurch können Daten in einem bestimmten Dokument-Manager freigegeben werden. Rufen Sie ITfDocumentMgr::QueryInterface mit IID_ITfCompartmentMgr auf, um den Dokument-Manager zu erhalten.

Jeder erstellte Kontext enthält auch einen Abteil-Manager. Dadurch können Daten innerhalb eines bestimmten Kontexts freigegeben werden. Um einen Kontextabteil-Manager abzurufen, rufen Sie ITfContext::QueryInterface mit IID_ITfCompartmentMgr auf.

Erstellen und Löschen eines Fachs

Ein Abteil wird erstellt, wenn ITfCompartmentMgr::GetCompartment zum ersten Mal mit der Abteil-GUID aufgerufen wird. Der installierende Client sollte den Anfangswert des Abteils mithilfe von ITfCompartment::SetValue festlegen. Bis ein Wert festgelegt ist, ist der Abteilwert leer. Aus diesem Grund gibt es keine Möglichkeit zu überprüfen, ob das Abteil vor dem Aufruf von GetCompartment vorhanden war. Um diese Situation zu vermeiden, sollte der installierende Client den Wert auf einen Anfangswert festlegen, damit andere Clients ermitteln können, ob das Abteil bereits vorhanden ist.

Die ITfCompartmentMgr::ClearCompartment-Methode wird verwendet, um ein Fach zu entfernen. Alle vorhandenen Verweise auf das Fach werden als ungültig markiert.

Abrufen von Fächern

Mithilfe der ITfCompartmentMgr-Schnittstelle kann ein Client Fächer auflisten, indem er ITfCompartmentMgr::EnumCompartments aufruft. Diese Methode stellt ein IEnumGUID-Objekt bereit, das die GUIDs aller installierten Abteilungen enthält.

Mithilfe der Abteil-GUID wird ITfCompartmentMgr::GetCompartment verwendet, um ein bestimmtes Fach abzurufen. Diese Methode stellt dem Aufrufer ein ITfCompartment-Objekt bereit, das die Abteildaten abrufen und festlegen kann.

Empfangen von Benachrichtigungen zum Abteilwechsel

Wenn sich der Wert eines Abteils ändert, benachrichtigt der TSF-Manager alle installierten Hinweissenken, dass sich das Fach geändert hat. Um eine Abteiländerungssenke zu installieren, erstellen Sie ein Objekt, das ITfCompartmentEventSink implementiert. Rufen Sie dann ITfCompartment::QueryInterface mit IID_ITfSource auf dem zu überwachenden Compartmentobjekt auf, um eine ITfSource-Schnittstelle abzurufen. Rufen Sie nun ITfSource::AdviseSink mit IID_ITfCompartmentEventSink und dem Zeiger auf das ITfCompartmentEventSink-Objekt auf. Wenn sich der Wert des Fachs ändert, wird die ITfCompartmentEventSink::OnChange-Senke der Empfehlungssenke mit der GUID des Abteils aufgerufen. Die Beratersenke kann ITfCompartment::GetValue aufrufen, um den neuen Wert abzurufen.

ITfCompartmentMgr

ITfCompartment

ITfCompartmentEventSink

TfClientId

ITfThreadMgr::GetGlobalCompartment

ITfCompartmentMgr::GetCompartment

ITfCompartment::SetValue

ITfCompartmentMgr::ClearCompartment

ITfCompartmentMgr::EnumCompartments

ITfSource

ITfSource::AdviseSink

ITfCompartmentEventSink::OnChange