車廂
區間類型
有幾種不同類型的區間。 有一個全域區間,每個線程管理員、檔管理員和內容都可以包含區間。
全域區間可讓用戶端跨進程共享數據。 若要取得全域區間管理員,請呼叫 ITfThreadMgr::GetGlobalCompartment。
線程管理員包含區間管理員,其中包含每個線程的區間。 這可讓數據在線程內共用。 若要取得線程管理員區間管理員,請使用 IID_ITfCompartmentMgr 呼叫 ITfThreadMgr::QueryInterface。
每個建立的檔管理員也都包含區間管理員。 這可讓數據在特定檔管理員內共用。 若要取得檔管理員區間管理員,請使用 IID_ITfCompartmentMgr 呼叫 ITfDocumentMgr::QueryInterface。
每個建立的內容也都包含區間管理員。 這可讓數據在特定內容中共用。 若要取得內容區間管理員,請使用 IID_ITfCompartmentMgr 呼叫 ITfContext::QueryInterface。
建立和刪除區間
第一次 ITfCompartmentMgr::GetCompartment 會使用區間 GUID 呼叫區間。 安裝客戶端應該使用 ITfCompartment::SetValue來設定區間的初始值。 在設定值之前,區間值是空的。 因此,在呼叫 getCompartment 之前,沒有任何方法可以驗證區間是否存在。 為了避免這種情況,安裝客戶端應該將值設定為一些初始值,讓其他用戶端可以判斷區間是否已經存在。
ITfCompartmentMgr::ClearCompartment 方法可用來移除區間。 區間的任何現有參考都會標示為無效。
取得區間
使用 ITfCompartmentMgr 介面,用戶端可以呼叫 ITfCompartmentMgr::EnumCompartments來列舉區間。 此方法提供 IEnumGUID 物件,其中包含所有已安裝區間的 GUID。
使用區間 GUID ,ITfCompartmentMgr::GetCompartment 用來取得特定區間。 這個方法會提供呼叫端 ITfCompartment 物件,以取得和設定區間數據。
接收區間變更通知
當區間的值變更時,TSF 管理員會通知任何已安裝的建議接收,指出區間已變更。 若要安裝區間變更建議接收,請建立實作 ITfCompartmentEventSink的物件。 然後呼叫 ITfCompartment::QueryInterface,並在要監視的區間物件上使用IID_ITfSource來取得 ITfSource 介面。 現在,使用 IID_ITfCompartmentEventSink 和 ITfCompartmentEventSink 物件的指標,呼叫 ITfSource::AdviseSink。 當區間的值變更時,建議接收的 ITfCompartmentEventSink::OnChange 會使用區間的 GUID 呼叫。 建議接收可以呼叫 ITfCompartment::GetValue,以取得新的值。
相關主題