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

ITfPropertyStore

COM
IID6834b120-88cb-11d2-bf45-00105a2799b5継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ITfPropertyStore インターフェイスはテキストサービスが実装し、TSF マネージャーが静的でないプロパティ値を取得するために使用します。このインターフェイスのインスタンスは ITfProperty::SetValueStore に渡されます。

メソッド 9

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

vtbl 3 HRESULT GetType(GUID* pguid)

ITfPropertyStore::GetType メソッド

pguidGUID*outプロパティ識別子を受け取る GUID 値へのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pguid が無効です。
E_FAIL
原因不明のエラーが発生しました。
vtbl 4 HRESULT GetDataType(DWORD* pdwReserved)

ITfPropertyStore::GetDataType メソッド

pdwReservedDWORD*outデータ型を受け取る DWORD 値へのポインター。このパラメーターは予約されており、0 を設定する必要があります。

戻り値

このメソッドは、成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT GetData(VARIANT* pvarValue)

ITfPropertyStore::GetData メソッド

pvarValueVARIANT*outプロパティのデータを受け取る VARIANT 値へのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pvarValue が無効です。
E_FAIL
原因不明のエラーが発生しました。
vtbl 6 HRESULT OnTextUpdated(DWORD dwFlags, ITfRange* pRangeNew, BOOL* pfAccept)

ITfPropertyStore::OnTextUpdated メソッド

dwFlagsDWORDin

テキストの変更に関する追加情報を示すフラグのセットを格納します。0 または次の値を指定できます。

意味
TF_TU_CORRECTION
テキストの変更は修正の結果です。これは、テキストの意味は変化していないことを示します。例としては、スペルチェッカーがつづりの誤った単語を修正した場合が挙げられます。
pRangeNewITfRange*in変更されたテキストの範囲(レンジ)を保持する ITfRange インターフェイスへのポインター。
pfAcceptBOOL*outプロパティストアを保持すべきかどうかを示す値を受け取る BOOL 変数へのポインター。プロパティストアを保持する場合は 0 以外の値を、破棄する場合は 0 を受け取ります。プロパティストアが破棄される場合、TSF マネージャーはプロパティ値を VT_EMPTY に設定し、プロパティストアを解放します。

戻り値

このメソッドは次のいずれかの値を返します。

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

解説(Remarks)

このメソッドが S_OK 以外の値を返した場合、プロパティストアは破棄されます。

vtbl 7 HRESULT Shrink(ITfRange* pRangeNew, BOOL* pfFree)

ITfPropertyStore::Shrink メソッド

pRangeNewITfRange*in切り詰められた範囲(レンジ)を保持する ITfRange インターフェイスへのポインター。
pfFreeBOOL*outプロパティストアを保持すべきかどうかを示す値を受け取る BOOL 変数へのポインター。プロパティストアを保持する場合は 0 以外の値を、破棄する場合は 0 を受け取ります。プロパティストアが破棄される場合、TSF マネージャーはプロパティ値を VT_EMPTY に設定し、プロパティストアを解放します。

戻り値

このメソッドは次のいずれかの値を返します。

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

解説(Remarks)

このメソッドが S_OK 以外の値を返した場合、プロパティストアは破棄されます。

vtbl 8 HRESULT Divide(ITfRange* pRangeThis, ITfRange* pRangeNew, ITfPropertyStore** ppPropStore)

ITfPropertyStore::Divide メソッド

pRangeThisITfRange*inこのプロパティストアが今後カバーする範囲(レンジ)を保持する ITfRange オブジェクトへのポインター。これはコンテキストの先頭に最も近いテキスト範囲になります。
pRangeNewITfRange*in新しいプロパティストアがカバーする範囲(レンジ)を保持する ITfRange オブジェクトへのポインター。これはコンテキストの末尾に最も近いテキスト範囲になります。
ppPropStoreITfPropertyStore**outpRangeNew で指定された範囲をカバーする新しいプロパティストアオブジェクトを受け取る ITfPropertyStore インターフェイスポインターへのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

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

解説(Remarks)

このメソッドは pRangeNew をカバーする新しいプロパティストアオブジェクトを作成し、そのオブジェクトへのポインターを ppPropStore で返します。新しいプロパティストアが返されない場合、元のプロパティストアは破棄され、両方の範囲のプロパティストアは空に設定されます。

このメソッドが S_OK 以外の値を返した場合、元のプロパティストアは破棄されます。

vtbl 9 HRESULT Clone(ITfPropertyStore** pPropStore)

ITfPropertyStore::Clone メソッド

pPropStoreITfPropertyStore**out新しいプロパティストアオブジェクトを受け取る ITfPropertyStore インターフェイスポインターへのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。

解説(Remarks)

このメソッドは新しいプロパティストアオブジェクトを作成し、元のプロパティストアオブジェクトとまったく同じ複製として動作するように初期化します。新しいオブジェクトは元のオブジェクトから完全に独立している必要があります。

vtbl 10 HRESULT GetPropertyRangeCreator(GUID* pclsid)

ITfPropertyStore::GetPropertyRangeCreator メソッド

pclsidGUID*outITfCreatePropertyStore を実装する、登録済みテキストサービスのクラス識別子を受け取る CLSID へのポインター。プロパティストアの永続化がサポートされていない場合、このパラメーターには CLSID_NULL を返すことができます。

戻り値

このメソッドは次のいずれかの値を返します。

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

解説(Remarks)

プロパティストアを逆シリアル化する際、TSF マネージャーはこの CLSID のオブジェクトを作成し、そこから ITfCreatePropertyStore インターフェイスポインターを取得します。次にマネージャーは、その ITfCreatePropertyStore オブジェクトを使用してプロパティストアオブジェクトを作成します。

vtbl 11 HRESULT Serialize(IStream* pStream, DWORD* pcb)

ITfPropertyStore::Serialize メソッド

pStreamIStream*inプロパティストアのデータの書き込み先となる IStream オブジェクトへのポインター。
pcbDWORD*outストリームに書き込まれたバイト数を受け取る ULONG 値へのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。

解説(Remarks)

このメソッドは、ストリームへの書き込みを行う前にストリームの挿入位置を移動してはなりません。また、書き込んだデータの末尾に挿入位置を残しておく必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ITfPropertyStore "{6834B120-88CB-11D2-BF45-00105A2799B5}"
#usecom global ITfPropertyStore IID_ITfPropertyStore "{}"
#comfunc global ITfPropertyStore_GetType                  3 var
#comfunc global ITfPropertyStore_GetDataType              4 var
#comfunc global ITfPropertyStore_GetData                  5 var
#comfunc global ITfPropertyStore_OnTextUpdated            6 int,sptr,var
#comfunc global ITfPropertyStore_Shrink                   7 sptr,var
#comfunc global ITfPropertyStore_Divide                   8 sptr,sptr,sptr
#comfunc global ITfPropertyStore_Clone                    9 sptr
#comfunc global ITfPropertyStore_GetPropertyRangeCreator  10 var
#comfunc global ITfPropertyStore_Serialize                11 sptr,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。