ITextStoreACPSink
COM公式ドキュメント
ITextStoreACPSink インターフェイスは TSF マネージャーによって実装され、ACP ベースのアプリケーションが特定のイベントの発生をマネージャーに通知するために使用します。マネージャーは ITextStoreACP::AdviseSink を呼び出してこのアドバイズシンクをインストールします。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ITextStoreACPSink::OnTextChange メソッド
| dwFlags | TEXT_STORE_TEXT_CHANGE_FLAGS | in | テキストの変更に関する追加情報を指定するフラグのセットを格納します。次の値のうち 1 つ以上を指定できます。
| ||||||
| pChange | TS_TEXTCHANGE* | in | テキストの変更データを格納する TS_TEXTCHANGE 構造体へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pChange が無効です。 | |
| メモリの割り当てに失敗しました。 | |
| TSF マネージャーがドキュメントのロックを保持しています。これは通常、ITextStoreACP::SetText など、別の ITextStoreACP メソッドの内部からこのメソッドが呼び出されたことを示します。 |
解説(Remarks)
ITextStoreACPSink::OnTextChange は、ITextStoreACP::SetText や ITextStoreACP::InsertTextAtSelection などの ITextStoreACP インターフェイスのメソッドによってテキストが変更された場合には呼び出されません。
このメソッドを呼び出すとき、アプリケーションはドキュメントロックを許可できる状態でなければなりません。
ITextStoreACPSink::OnSelectionChange メソッド
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| マネージャーがドキュメントのロックを保持しています。 |
解説(Remarks)
ITextStoreACPSink::OnSelectionChange は、ITextStoreACP::SetSelection や ITextStoreACP::InsertTextAtSelection などの ITextStoreACP インターフェイスのメソッドによって選択範囲が変更された場合には呼び出されません。
このメソッドを呼び出すとき、アプリケーションはドキュメントロックを許可できる状態でなければなりません。
ITextStoreACPSink::OnLayoutChange メソッド
| lcode | TsLayoutCode | in | 変更の種類を定義する TsLayoutCode 値を格納します。 |
| vcView | DWORD | in | ドキュメントを識別する、アプリケーション定義のクッキーを格納します。詳細については、ITextStoreACP::GetActiveView を参照してください。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
レイアウトの変更は、テキストの変更、フォントサイズの変更、ウィンドウの移動、ウィンドウのサイズ変更、その他表示されるテキストに影響する変更に応じて発生します。
アプリケーションがレイアウトを計算していないために ITextStoreACP::GetTextExt または ITextStoreACP::GetACPFromPoint の呼び出しが TS_E_NOLAYOUT を返した場合、アプリケーションはレイアウトが利用可能になった時点で ITextStoreACPSink::OnLayoutChange を呼び出さなければなりません。
ITextStoreACPSink::OnStatusChange メソッド
| dwFlags | DWORD | in | 新しい状態を指定する値を格納します。指定可能な値の詳細については、TS_STATUS 構造体の dwDynamicFlags メンバーを参照してください。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
ITextStoreACPSink::OnAttrsChange メソッド
| acpStart | INT | in | 属性変更の開始位置を指定します。 |
| acpEnd | INT | in | 属性変更の終了位置を指定します。 |
| cAttrs | DWORD | in | paAttrs 配列に含まれる属性の数を指定します。 |
| paAttrs | GUID* | in | 変更された属性を識別する TS_ATTRID 値の配列へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| メモリの割り当てに失敗しました。 | |
| 1 つ以上のパラメーターが無効です。 |
ITextStoreACPSink::OnLockGranted メソッド
| dwLockFlags | TEXT_STORE_LOCK_FLAGS | in | 要求されたロックの種類やその他のロック要求データを示すフラグのセットを格納します。次のいずれかの値を指定できます。
|
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| dwLockFlags が無効です。 | |
| 誤った種類のロックが許可されました。 |
解説(Remarks)
ドキュメントロックは ITextStoreACP::RequestLock を呼び出して要求します。アプリケーションは、要求されたロックの種類を指定して ITextStoreACPSink::OnLockGranted を呼び出すことでロック要求を許可します。ロックは OnLockGranted の呼び出し中のみ有効です。OnLockGranted から復帰すると、ドキュメントはロック解除されたとみなされます。
dwLockFlags に指定するロックの種類は、対応する ITextStoreACP::RequestLock の呼び出しで要求されたロックの種類と一致していなければなりません。
ITextStoreACP::RequestLock の内部から同期ロック要求が行われた場合、呼び出し元は ITextStoreACP::RequestLock の戻り値も提供しなければなりません。
ITextStoreACPSink::OnStartEditTransaction メソッド
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドを呼び出すと、インストールされているすべての編集トランザクションシンクに対して ITfEditTransactionSink::OnStartEditTransaction メソッドが呼び出されます。
編集トランザクションとは、一度にまとめて処理すべきテキスト変更のグループです。このメソッドを呼び出すことで、テキストサービスは ITextStoreACPSink::OnEndEditTransaction が呼び出されるまで以降の変更をキューに蓄積できます。ITextStoreACPSink::OnEndEditTransaction が呼び出されると、テキストサービスはキューに蓄積されたすべての変更を処理します。編集トランザクションの使用は任意です。
ITextStoreACPSink::OnEndEditTransaction メソッド
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドを呼び出すと、インストールされているすべての編集トランザクションシンクに対して ITfEditTransactionSink::OnEndEditTransaction メソッドが呼び出されます。
編集トランザクションとは、一度にまとめて処理すべきテキスト変更のグループです。ITextStoreACPSink::OnStartEditTransaction を呼び出すことで、テキストサービスは ITextStoreACPSink::OnEndEditTransaction が呼び出されるまで以降の変更をキューに蓄積できます。ITextStoreACPSink::OnEndEditTransaction が呼び出されると、テキストサービスはキューに蓄積されたすべての変更を処理します。編集トランザクションの使用は任意です。
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 方式にも切替可。#define global IID_ITextStoreACPSink "{22D44C94-A419-4542-A272-AE26093ECECF}" #usecom global ITextStoreACPSink IID_ITextStoreACPSink "{}" #comfunc global ITextStoreACPSink_OnTextChange 3 int,sptr #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,sptr #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が無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。