ITfMouseSink
COM公式ドキュメント
ITfMouseSink インターフェイスは、マウスイベントの通知を受け取るためにテキストサービスが実装します。マウスイベントシンクは、いずれかの ITfMouseTracker インターフェイスの ITfMouseTracker::AdviseMouseSink メソッドを使用してインストールします。
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ITfMouseSink::OnMouseEvent メソッド
| uEdge | DWORD | in | テキスト範囲(レンジ)の先頭からのマウス位置のオフセットを、文字単位で格納します。詳細については、「解説」セクションを参照してください。 |
| uQuadrant | DWORD | in | マウス位置が含まれる、エッジを基準とした 0 から始まる四分割(クアドラント)のインデックスを格納します。詳細については、「解説」セクションを参照してください。 |
| dwBtnStatus | DWORD | in | イベント発生時のマウスボタンの状態を示します。指定できる値については、WM_MOUSEMOVE メッセージの wParam パラメーターを参照してください。 |
| pfEaten | BOOL* | out | マウスイベントが処理されたかどうかを、戻り時に示す BOOL へのポインターです。この値が TRUE を受け取った場合、マウスイベントは処理されています。FALSE の場合、マウスイベントは処理されていません。 |
戻り値
このメソッドは、次の値のいずれかを返すことがあります。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
呼び出し元は、ダブルクリックイベントを複数のマウスボタン押下イベントに変換する必要があります。これにより、コンテキストウィンドウがダブルクリックをサポートしていない場合でも、テキストサービスはダブルクリックイベントを検出できます。
uEdge には、テキスト範囲(レンジ)の先頭からのマウス位置のオフセットが文字単位で格納されます。マウス位置は常に最も近いエッジに丸められます。各エッジは 4 つの等しいクアドラント(四分割)に分けられ、2 つのクアドラントがエッジの手前に、2 つのクアドラントがエッジの後ろに位置します。uQuadrant には、マウス位置の 0 から始まるクアドラントのインデックスが格納されます。次の図では、点 "X" はエッジ 1 のクアドラント 2 に、点 "Y" はエッジ 3 のクアドラント 1 にあります。

Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITfMouseSink "{A1ADAAA2-3A24-449D-AC96-5183E7F5C217}" #usecom global ITfMouseSink IID_ITfMouseSink "{}" #comfunc global ITfMouseSink_OnMouseEvent 3 int,int,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ITfMouseSink "{A1ADAAA2-3A24-449D-AC96-5183E7F5C217}" #usecom global ITfMouseSink IID_ITfMouseSink "{}" #comfunc global ITfMouseSink_OnMouseEvent 3 int,int,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。