Win32 API 日本語リファレンス
ホームUI.TextServices › ITfContextOwnerServices

ITfContextOwnerServices

COM
IIDb23eb630-3e1c-11d3-a745-0050040ab407継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ITfContextOwnerServices インターフェイスはマネージャーによって実装され、コンテキストの所有者として動作するテキストサービスまたはアプリケーションから使用されます。

メソッド 7

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT OnLayoutChange()

ITfContextOwnerServices::OnLayoutChange メソッドは、コンポジション中にテキストストリームの画面上の表示が更新されたときに、コンテキストの所有者から呼び出されます。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

説明
S_OK
メソッドは成功しました。

解説(Remarks)

ITfContextOwnerServices::OnLayoutChange の呼び出しは、テキストの編集、フォントサイズの変更、ウィンドウの移動やサイズ変更などに応じて行われることがあります。

アプリケーションが画面レイアウトを計算していないために ITfContextView::GetTextExt または ITfContextOwner::GetACPFromPoint の呼び出しが失敗した場合 (戻り値: TS_E_NOLAYOUT)、アプリケーションは情報が用意でき次第 ITfContextOwnerServices::OnLayoutChange を呼び出す必要があります。

vtbl 4 HRESULT OnStatusChange(DWORD dwFlags)

ITfContextOwnerServices::OnStatusChange メソッドは、ITfContextOwner::GetStatus メソッドが返す TS_STATUS 構造体の dwDynamicFlags メンバーが変更されたときに、コンテキストの所有者から呼び出されます。

dwFlagsDWORDin動的ステータスフラグを指定します。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

説明
S_OK
メソッドは成功しました。
vtbl 5 HRESULT OnAttributeChange(GUID* rguidAttribute)

ITfContextOwnerServices::OnAttributeChange メソッド

rguidAttributeGUID*inサポート属性の GUID を指定します。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

説明
S_OK
メソッドは成功しました。

解説(Remarks)

サポート属性は、コンテキストの所有者が管理する読み取り専用のプロパティです。サポートされる属性は Tsattrs.h ヘッダーファイルに定義されています。

vtbl 6 HRESULT Serialize(ITfProperty* pProp, ITfRange* pRange, TF_PERSISTENT_PROPERTY_HEADER_ACP* pHdr, IStream* pStream)

ITfContextOwnerServices::Serialize メソッドは、テキストの範囲 (レンジ) からプロパティを取得し、そのプロパティのデータをストリームオブジェクトに書き込みます。これにより、アプリケーションはプロパティのデータを (たとえばファイルに書き出すなどして) 保存できます。

pPropITfProperty*inシリアル化するプロパティを識別する ITfProperty インターフェイスへのポインター。
pRangeITfRange*inプロパティの取得元となる範囲 (レンジ) を識別する ITfRange インターフェイスへのポインター。
pHdrTF_PERSISTENT_PROPERTY_HEADER_ACP*outプロパティのヘッダーデータを受け取る TF_PERSISTENT_PROPERTY_HEADER_ACP 構造体へのポインター。
pStreamIStream*inTSF マネージャーがプロパティのデータを書き込む IStream オブジェクトへのポインター。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

説明
S_OK
メソッドは成功しました。
S_FALSE
プロパティをシリアル化できません。
E_FAIL
不特定のエラーが発生しました。

解説(Remarks)

pHdr に格納されるプロパティヘッダーのデータはすべてのプロパティに共通のもので、pStream に書き込まれたデータとともに保持する必要があります。プロパティのデータを復元するには、この 2 つを対にして ITfContextOwnerServices::Unserialize に渡す必要があります。

アプリケーションは、次の手順によってドキュメント全体のすべてのプロパティを保存できます。

このメソッドを呼び出すとき、アプリケーションは同期的な読み取り専用ロックを許可できる状態でなければなりません。
vtbl 7 HRESULT Unserialize(ITfProperty* pProp, TF_PERSISTENT_PROPERTY_HEADER_ACP* pHdr, IStream* pStream, ITfPersistentPropertyLoaderACP* pLoader)

ITfContextOwnerServices::Unserialize メソッド

pPropITfProperty*inプロパティのデータを受け取る ITfProperty オブジェクトへのポインター。
pHdrTF_PERSISTENT_PROPERTY_HEADER_ACP*inプロパティのヘッダーデータを格納する TF_PERSISTENT_PROPERTY_HEADER_ACP 構造体へのポインター。
pStreamIStream*inプロパティのデータを格納する IStream オブジェクトへのポインター。pLoaderNULL でない場合、このパラメーターは NULL にできます。pLoaderNULL でない場合、このパラメーターは無視されます。
pLoaderITfPersistentPropertyLoaderACP*inTSF マネージャーがプロパティのデータを取得するために使用する ITfPersistentPropertyLoaderACP オブジェクトへのポインター。pStreamNULL でない場合、このパラメーターは NULL にできます。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

説明
S_OK
メソッドは成功しました。
TF_S_ASYNC
プロパティのデータは非同期に取得されます。
TF_E_SYNCHRONOUS
同期的な読み取り専用ロックを取得できません。
E_FAIL
不特定のエラーが発生しました。

解説(Remarks)

pLoader ではなく pStream が指定された場合、プロパティのデータはこのメソッドの呼び出し中に pStream から読み取られます。pStream ではなく pLoader が指定された場合、プロパティのデータは pLoader から非同期に読み取られます。プロパティのデータが大きい場合、pStream を使用すると長い遅延が発生することがあります。

このメソッドを呼び出すとき、アプリケーションは同期的な読み取り専用ロックを許可できる状態でなければなりません。

vtbl 8 HRESULT ForceLoadProperty(ITfProperty* pProp)

ITfContextOwnerServices::ForceLoadProperty メソッド

pPropITfProperty*in読み込むプロパティを指定する ITfProperty オブジェクトへのポインター。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
メモリの割り当てエラーが発生しました。
E_FAIL
不特定のエラーが発生しました。

解説(Remarks)

このメソッドを呼び出す前に、アプリケーションは同期的な読み取り専用ロックを許可できる状態でなければなりません。

vtbl 9 HRESULT CreateRange(INT acpStart, INT acpEnd, ITfRangeACP** ppRange)

ITfContextOwnerServices::CreateRange メソッドは、指定された文字位置に基づいて新しい範囲 (レンジ) を作成します。

acpStartINTin範囲の開始文字位置を指定します。
acpEndINTin範囲の終了文字位置を指定します。
ppRangeITfRangeACP**out指定された開始文字位置と終了文字位置の範囲を表す range オブジェクトへのポインターを受け取ります。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
指定された範囲が NULL であるか、指定された開始文字位置が 0 未満であるか、指定された開始文字位置が指定された終了文字位置より大きい値です。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ITfContextOwnerServices "{B23EB630-3E1C-11D3-A745-0050040AB407}"
#usecom global ITfContextOwnerServices IID_ITfContextOwnerServices "{}"
#comfunc global ITfContextOwnerServices_OnLayoutChange     3
#comfunc global ITfContextOwnerServices_OnStatusChange     4 int
#comfunc global ITfContextOwnerServices_OnAttributeChange  5 var
#comfunc global ITfContextOwnerServices_Serialize          6 sptr,sptr,var,sptr
#comfunc global ITfContextOwnerServices_Unserialize        7 sptr,var,sptr,sptr
#comfunc global ITfContextOwnerServices_ForceLoadProperty  8 sptr
#comfunc global ITfContextOwnerServices_CreateRange        9 int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。