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

ITextStoreAnchorSink

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

公式ドキュメント

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

メソッド 8

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

vtbl 3 HRESULT OnTextChange(TEXT_STORE_CHANGE_FLAGS dwFlags, IAnchor* paStart, IAnchor* paEnd)

ITextStoreAnchorSink::OnTextChange メソッド

dwFlagsTEXT_STORE_CHANGE_FLAGSin

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

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

戻り値

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

説明
S_OK
メソッドは成功しました。
E_FAIL
変更を保持するための複製アンカーを作成できませんでした。
E_INVALIDARG
paStart または paEnd が無効です。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。
TS_E_NOLOCK
TSF マネージャーがドキュメントのロックを保持しています。これは通常、ITextStoreAnchor::SetText などの別の ITextStoreAnchor メソッドの内部からこのメソッドが呼び出されたことを示します。

解説(Remarks)

このメソッドは、アプリケーションが自身のテキストを変更した場合にのみ呼び出されます。クライアントが ITextStoreAnchor::SetTextITextStoreAnchor::InsertTextAtSelection などの ITextStoreAnchor メソッドでテキストを変更した場合には呼び出されません。

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

vtbl 4 HRESULT OnSelectionChange()

ITextStoreAnchorSink::OnSelectionChange メソッドは、テキストストリーム内の選択範囲が変更されたときに呼び出されます。このメソッドは、ITextStoreAnchor::GetSelection を呼び出した場合の戻り値が変化したときに必ず呼び出す必要があります。

戻り値

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

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

解説(Remarks)

このメソッドは、アプリケーション自身が選択範囲を変更した場合にのみ呼び出す必要があります。クライアントが ITextStoreAnchor::SetSelectionITextStoreAnchor::InsertTextAtSelection、あるいはその他の ITextStoreAnchor メソッドで選択範囲を変更した場合には呼び出す必要はありません。

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

アプリケーションは、このメソッドの内部からクライアントによる ITextStoreAnchor::RequestLock への再入呼び出しが行われることを想定しておく必要があります。アプリケーションはロック要求を同期的に許可することも、複数の変更がキャッシュされている場合には非同期に許可することもできます。

vtbl 5 HRESULT OnLayoutChange(TsLayoutCode lcode, DWORD vcView)

ITextStoreAnchorSink::OnLayoutChange メソッドは、ドキュメントのレイアウト (画面上の表現) が変更されたときに呼び出されます。

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

戻り値

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

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

解説(Remarks)

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

アプリケーションがレイアウトを計算していないために ITextStoreAnchor::GetTextExt または ITextStoreAnchor::GetAnchorFromPoint の呼び出しが TS_E_NOLAYOUT を返した場合、アプリケーションはレイアウトが利用可能になった時点で ITextStoreAnchorSink::OnLayoutChange を呼び出す必要があります。

vtbl 6 HRESULT OnStatusChange(DWORD dwFlags)

ITextStoreAnchorSink::OnStatusChange メソッド

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

戻り値

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

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

解説(Remarks)

アプリケーションは、ITextStoreAnchor::GetStatusTS_STATUSdwDynamicFlags メンバーについて新しい値を返すようになったときには、必ずこのメソッドを呼び出す必要があります。

vtbl 7 HRESULT OnAttrsChange(IAnchor* paStart, IAnchor* paEnd, DWORD cAttrs, GUID* paAttrs)

ITextStoreAnchorSink::OnAttrsChange メソッドは、1 つ以上のテキスト属性の値が変更されたときに呼び出されます。

paStartIAnchor*in属性が変更されたテキスト範囲の開始アンカーへのポインター。
paEndIAnchor*in属性が変更されたテキスト範囲の終了アンカーへのポインター。
cAttrsDWORDinpaAttrs 配列内の属性の数を指定します。
paAttrsGUID*in変更された属性を識別する TS_ATTRID 値の配列へのポインター。

戻り値

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

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。
vtbl 8 HRESULT OnLockGranted(TEXT_STORE_LOCK_FLAGS dwLockFlags)

ITextStoreAnchorSink::OnLockGranted メソッド

dwLockFlagsTEXT_STORE_LOCK_FLAGSin

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

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

戻り値

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

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

解説(Remarks)

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

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

OnLockGranted の内部から ITextStoreAnchor::RequestLock を呼び出すとエラー値が返されます。

アプリケーションは、OnLockGranted のコンテキスト内から ITextStoreAnchorSink のいずれのメソッドも呼び出してはなりません。

ITextStoreAnchor::RequestLock の内部から同期的なロック要求が行われた場合、呼び出し元は ITextStoreAnchor::RequestLock の戻り値も提供する必要があります。

vtbl 9 HRESULT OnStartEditTransaction()

ITextStoreAnchorSink::OnStartEditTransaction メソッド

戻り値

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

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

解説(Remarks)

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

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

編集トランザクションの使用は任意です。

vtbl 10 HRESULT OnEndEditTransaction()

ITextStoreAnchorSink::OnEndEditTransaction メソッド

戻り値

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

説明
S_OK
メソッドは成功しました。
E_UNEXPECTED
編集トランザクションの参照カウントが正しくありません。

解説(Remarks)

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

編集トランザクションとは、一度に処理すべきテキスト変更のグループです。ITextStoreAnchorSink::OnStartEditTransaction を呼び出すことで、テキストサービスは ITextStoreAnchorSink::OnEndEditTransaction が呼び出されるまで、以降の変更をキューに蓄積できます。ITextStoreAnchorSink::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_ITextStoreAnchorSink "{AA80E905-2021-11D2-93E0-0060B067B86E}"
#usecom global ITextStoreAnchorSink IID_ITextStoreAnchorSink "{}"
#comfunc global ITextStoreAnchorSink_OnTextChange            3 int,sptr,sptr
#comfunc global ITextStoreAnchorSink_OnSelectionChange       4
#comfunc global ITextStoreAnchorSink_OnLayoutChange          5 int,int
#comfunc global ITextStoreAnchorSink_OnStatusChange          6 int
#comfunc global ITextStoreAnchorSink_OnAttrsChange           7 sptr,sptr,int,var
#comfunc global ITextStoreAnchorSink_OnLockGranted           8 int
#comfunc global ITextStoreAnchorSink_OnStartEditTransaction  9
#comfunc global ITextStoreAnchorSink_OnEndEditTransaction    10
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。