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

ITextStoreACPSink

COM
IID22d44c94-a419-4542-a272-ae26093ececf継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ITextStoreACPSink インターフェイスは TSF マネージャーによって実装され、ACP ベースのアプリケーションが特定のイベントの発生をマネージャーに通知するために使用します。マネージャーは ITextStoreACP::AdviseSink を呼び出してこのアドバイズシンクをインストールします。

メソッド 8

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

vtbl 3 HRESULT OnTextChange(TEXT_STORE_TEXT_CHANGE_FLAGS dwFlags, TS_TEXTCHANGE* pChange)

ITextStoreACPSink::OnTextChange メソッド

dwFlagsTEXT_STORE_TEXT_CHANGE_FLAGSin

テキストの変更に関する追加情報を指定するフラグのセットを格納します。次の値のうち 1 つ以上を指定できます。

意味
0
テキストが変更されました。
TS_ST_CORRECTION
テキストは既存の内容の変換 (訂正) であり、.wav ファイルのデータや言語識別子など、特殊なテキストマークアップ情報 (メタデータ) は保持されます。このフラグは、元のテキストに関連付けられたデータを保持する必要があるアプリケーションで使用します。
pChangeTS_TEXTCHANGE*inテキストの変更データを格納する TS_TEXTCHANGE 構造体へのポインター。

戻り値

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

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pChange が無効です。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。
TS_E_NOLOCK
TSF マネージャーがドキュメントのロックを保持しています。これは通常、ITextStoreACP::SetText など、別の ITextStoreACP メソッドの内部からこのメソッドが呼び出されたことを示します。

解説(Remarks)

ITextStoreACPSink::OnTextChange は、ITextStoreACP::SetTextITextStoreACP::InsertTextAtSelection などの ITextStoreACP インターフェイスのメソッドによってテキストが変更された場合には呼び出されません。

このメソッドを呼び出すとき、アプリケーションはドキュメントロックを許可できる状態でなければなりません。

vtbl 4 HRESULT OnSelectionChange()

ITextStoreACPSink::OnSelectionChange メソッド

戻り値

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

説明
S_OK
メソッドは成功しました。
TS_E_NOLOCK
マネージャーがドキュメントのロックを保持しています。

解説(Remarks)

ITextStoreACPSink::OnSelectionChange は、ITextStoreACP::SetSelectionITextStoreACP::InsertTextAtSelection などの ITextStoreACP インターフェイスのメソッドによって選択範囲が変更された場合には呼び出されません。

このメソッドを呼び出すとき、アプリケーションはドキュメントロックを許可できる状態でなければなりません。

vtbl 5 HRESULT OnLayoutChange(TsLayoutCode lcode, DWORD vcView)

ITextStoreACPSink::OnLayoutChange メソッド

lcodeTsLayoutCodein変更の種類を定義する TsLayoutCode 値を格納します。
vcViewDWORDinドキュメントを識別する、アプリケーション定義のクッキーを格納します。詳細については、ITextStoreACP::GetActiveView を参照してください。

戻り値

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

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

解説(Remarks)

レイアウトの変更は、テキストの変更、フォントサイズの変更、ウィンドウの移動、ウィンドウのサイズ変更、その他表示されるテキストに影響する変更に応じて発生します。

アプリケーションがレイアウトを計算していないために ITextStoreACP::GetTextExt または ITextStoreACP::GetACPFromPoint の呼び出しが TS_E_NOLAYOUT を返した場合、アプリケーションはレイアウトが利用可能になった時点で ITextStoreACPSink::OnLayoutChange を呼び出さなければなりません。

vtbl 6 HRESULT OnStatusChange(DWORD dwFlags)

ITextStoreACPSink::OnStatusChange メソッド

dwFlagsDWORDin新しい状態を指定する値を格納します。指定可能な値の詳細については、TS_STATUS 構造体の dwDynamicFlags メンバーを参照してください。

戻り値

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

説明
S_OK
メソッドは成功しました。
vtbl 7 HRESULT OnAttrsChange(INT acpStart, INT acpEnd, DWORD cAttrs, GUID* paAttrs)

ITextStoreACPSink::OnAttrsChange メソッド

acpStartINTin属性変更の開始位置を指定します。
acpEndINTin属性変更の終了位置を指定します。
cAttrsDWORDinpaAttrs 配列に含まれる属性の数を指定します。
paAttrsGUID*in変更された属性を識別する TS_ATTRID 値の配列へのポインター。

戻り値

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

説明
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。
vtbl 8 HRESULT OnLockGranted(TEXT_STORE_LOCK_FLAGS dwLockFlags)

ITextStoreACPSink::OnLockGranted メソッド

dwLockFlagsTEXT_STORE_LOCK_FLAGSin

要求されたロックの種類やその他のロック要求データを示すフラグのセットを格納します。次のいずれかの値を指定できます。

意味
TS_LF_READ
ロックは読み取り専用です。
TS_LF_READWRITE
ロックは読み取り/書き込みです。

戻り値

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

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
dwLockFlags が無効です。
E_UNEXPECTED
誤った種類のロックが許可されました。

解説(Remarks)

ドキュメントロックは ITextStoreACP::RequestLock を呼び出して要求します。アプリケーションは、要求されたロックの種類を指定して ITextStoreACPSink::OnLockGranted を呼び出すことでロック要求を許可します。ロックは OnLockGranted の呼び出し中のみ有効です。OnLockGranted から復帰すると、ドキュメントはロック解除されたとみなされます。

dwLockFlags に指定するロックの種類は、対応する ITextStoreACP::RequestLock の呼び出しで要求されたロックの種類と一致していなければなりません。

ITextStoreACP::RequestLock の内部から同期ロック要求が行われた場合、呼び出し元は ITextStoreACP::RequestLock の戻り値も提供しなければなりません。

vtbl 9 HRESULT OnStartEditTransaction()

ITextStoreACPSink::OnStartEditTransaction メソッド

戻り値

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

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

解説(Remarks)

このメソッドを呼び出すと、インストールされているすべての編集トランザクションシンクに対して ITfEditTransactionSink::OnStartEditTransaction メソッドが呼び出されます。

編集トランザクションとは、一度にまとめて処理すべきテキスト変更のグループです。このメソッドを呼び出すことで、テキストサービスは ITextStoreACPSink::OnEndEditTransaction が呼び出されるまで以降の変更をキューに蓄積できます。ITextStoreACPSink::OnEndEditTransaction が呼び出されると、テキストサービスはキューに蓄積されたすべての変更を処理します。編集トランザクションの使用は任意です。

vtbl 10 HRESULT OnEndEditTransaction()

ITextStoreACPSink::OnEndEditTransaction メソッド

戻り値

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

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

解説(Remarks)

このメソッドを呼び出すと、インストールされているすべての編集トランザクションシンクに対して ITfEditTransactionSink::OnEndEditTransaction メソッドが呼び出されます。

編集トランザクションとは、一度にまとめて処理すべきテキスト変更のグループです。ITextStoreACPSink::OnStartEditTransaction を呼び出すことで、テキストサービスは ITextStoreACPSink::OnEndEditTransaction が呼び出されるまで以降の変更をキューに蓄積できます。ITextStoreACPSink::OnEndEditTransaction が呼び出されると、テキストサービスはキューに蓄積されたすべての変更を処理します。編集トランザクションの使用は任意です。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ITextStoreACPSink "{22D44C94-A419-4542-A272-AE26093ECECF}"
#usecom global ITextStoreACPSink IID_ITextStoreACPSink "{}"
#comfunc global ITextStoreACPSink_OnTextChange            3 int,var
#comfunc global ITextStoreACPSink_OnSelectionChange       4
#comfunc global ITextStoreACPSink_OnLayoutChange          5 int,int
#comfunc global ITextStoreACPSink_OnStatusChange          6 int
#comfunc global ITextStoreACPSink_OnAttrsChange           7 int,int,int,var
#comfunc global ITextStoreACPSink_OnLockGranted           8 int
#comfunc global ITextStoreACPSink_OnStartEditTransaction  9
#comfunc global ITextStoreACPSink_OnEndEditTransaction    10
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。