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

ITextStoreACPServices

COM
IIDaa80e901-2021-11d2-93e0-0060b067b86e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ITextStoreACPServices インターフェイスは TSF マネージャーによって実装され、ACP ベースのアプリケーションにさまざまなサービスを提供します。

メソッド 4

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

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

ITextStoreACPServices::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 つのデータの組を ITextStoreACPServices::Unserialize に渡す必要があります。

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

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

ITextStoreACPServices::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 を指定した場合、プロパティデータは Unserialize の呼び出し中に pStream から読み取られます。pStream ではなく pLoader を指定した場合、プロパティデータは pLoader から非同期に読み取られます。プロパティデータが大きい場合、pStream を使用すると長い遅延が発生することがあります。

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

vtbl 5 HRESULT ForceLoadProperty(ITfProperty* pProp)

ITextStoreACPServices::ForceLoadProperty メソッド

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

戻り値

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

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

解説(Remarks)

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

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

ITextStoreACPServices::CreateRange メソッド

acpStartINTin範囲 (レンジ) の開始位置を格納します。
acpEndINTin範囲 (レンジ) の終了位置を格納します。
ppRangeITfRangeACP**out範囲オブジェクトを受け取る ITfRangeACP インターフェイスポインターへのポインター。

戻り値

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

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
ppRange が無効です。
E_FAIL
不特定のエラーが発生しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ITextStoreACPServices "{AA80E901-2021-11D2-93E0-0060B067B86E}"
#usecom global ITextStoreACPServices IID_ITextStoreACPServices "{}"
#comfunc global ITextStoreACPServices_Serialize          3 sptr,sptr,var,sptr
#comfunc global ITextStoreACPServices_Unserialize        4 sptr,var,sptr,sptr
#comfunc global ITextStoreACPServices_ForceLoadProperty  5 sptr
#comfunc global ITextStoreACPServices_CreateRange        6 int,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。