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

ITextStoreACP2

COM
IIDf86ad89f-5fe4-4b8d-bb9f-ef3797a84f1f継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ITextStoreACP2 インターフェースはアプリケーションが実装し、TSF のテキストストリームやテキストストアを操作するために TSF マネージャーが使用します。

メソッド 25

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

vtbl 3 HRESULT AdviseSink(GUID* riid, IUnknown* punk, DWORD dwMask)

ITextStoreACPSink インターフェースの新しいアドバイズシンクをインストールするか、既存のアドバイズシンクを変更します。シンクインターフェースは punk パラメーターで指定します。

riidGUID*inシンクインターフェースを指定します。
punkIUnknown*inシンクインターフェースへのポインター。NULL にはできません。
dwMaskDWORDinアドバイズシンクに通知するイベントを指定します。指定可能な値の詳細については、TS_AS_* 定数を参照してください。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
CONNECT_E_ADVISELIMIT
シンクインターフェースのポインターを取得できませんでした。
E_INVALIDARG
指定されたシンクインターフェースはサポートされていません。
E_UNEXPECTED
指定されたシンクオブジェクトを取得できませんでした。
vtbl 4 HRESULT UnadviseSink(IUnknown* punk)

TSF マネージャーからの通知がもう必要ないことを示すために、アプリケーションが呼び出します。TSF マネージャーはシンクインターフェースを解放し、通知を停止します。

punkIUnknown*inシンクオブジェクトへのポインター。NULL にはできません。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
CONNECT_E_NOCONNECTION
アクティブなシンクオブジェクトがありません。

解説(Remarks)

新しいシンクオブジェクトを登録する AdviseSink メソッドの呼び出しには、必ずこのメソッドの呼び出しを対応させる必要があります。既に登録済みのシンクの dwMask パラメーターを更新するだけの AdviseSink メソッドの呼び出しについては、UnadviseSink メソッドを呼び出す必要はありません。

たとえば、シンクオブジェクトを登録するには、アプリケーションは最初に AdviseSink メソッドを呼び出します。シンクオブジェクトの登録後、アプリケーションは同じシンクオブジェクトで AdviseSink メソッドを再度呼び出して dwMask パラメーターを変更できます。シンクオブジェクトの登録を解除するには、アプリケーションは UnadviseSink メソッドを呼び出します。

punk パラメーターは、AdviseSink メソッドで最初に渡されたポインターと同じ COM アイデンティティを持つ必要があります。

vtbl 5 HRESULT RequestLock(DWORD dwLockFlags, HRESULT* phrSession)

ドキュメントを変更するためのドキュメントロックを提供する目的で、TSF マネージャーが呼び出します。このメソッドは OnLockGranted メソッドを呼び出してドキュメントロックを作成します。

dwLockFlagsDWORDin

要求するロックの種類を指定します。

値 意味
TS_LF_READ
ドキュメントは読み取り専用ロックを持ち、変更できません。
TS_LF_READWRITE
ドキュメントは読み取り/書き込みロックを持ち、変更できます。
TS_LF_SYNC
このフラグを他のフラグと組み合わせた場合、ドキュメントは同期ロックを持ちます。
phrSessionHRESULT*out

ロック要求が同期の場合、ロック要求の結果を示す OnLockGranted メソッドからの HRESULT 値を受け取ります。

ロック要求が非同期で結果が TS_S_ASYNC の場合、ドキュメントは非同期ロックを受け取ります。ロック要求が非同期で結果が TS_E_SYNCHRONOUS の場合、ドキュメントを同期的にロックすることはできません。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_FAIL
不特定のエラーが発生しました。

解説(Remarks)

このメソッドは OnLockGranted メソッドを使用してドキュメントをロックします。アプリケーションは、RequestLock メソッドの内部でドキュメントを変更したり、OnTextChange メソッドで変更通知を送信したりしてはいけません。報告すべき保留中の変更がある場合、アプリケーションは非同期のロック要求にのみ応答できます。

アプリケーションが必要とするコールバックは 1 回だけであるため、複数の RequestLock メソッド呼び出しをキューに入れようとしてはいけません。ただし、呼び出し元が複数の読み取り要求と 1 つ以上の書き込み要求を行った場合、コールバックは書き込みアクセスに対して行う必要があります。

同期ロックの要求が成功した場合、その要求は非同期ロックの要求に優先します。同期ロックの要求が失敗した場合は、非同期ロックの要求に優先しません。この場合、実装は未処理の非同期要求が存在すればそれを処理する必要があります。

RequestLock メソッドが戻る前にロックが許可された場合、phrSession パラメーターは OnLockGranted メソッドが返した HRESULT を受け取ります。呼び出しは成功したもののロックが後で許可される場合、phrSession パラメーターは TS_S_ASYNC フラグを受け取ります。RequestLock が S_OK 以外を返した場合、phrSession パラメーターは無視してください。

呼び出し元は、このメソッドを再入的に呼び出してはいけません。ただし、呼び出し元が読み取り専用ロックを保持している場合は例外です。この場合、非同期の書き込みロックを要求するために再入的に呼び出すことができます。書き込みロックは読み取り専用ロックの終了後に許可されます。

ドキュメントロックの詳細については、ドキュメントロックを参照してください。

vtbl 6 HRESULT GetStatus(TS_STATUS* pdcs)

ドキュメントの状態を取得します。ドキュメントの状態は TS_STATUS 構造体を通じて返されます。

pdcsTS_STATUS*outドキュメントの状態を格納する TS_STATUS 構造体を受け取ります。NULL にはできません。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
TS_STATUS パラメーターへのポインターが無効です。
vtbl 7 HRESULT QueryInsert(INT acpTestStart, INT acpTestEnd, DWORD cch, INT* pacpResultStart, INT* pacpResultEnd)

指定された開始文字位置と終了文字位置が有効かどうかを判定します。ドキュメントへの編集を実行する前に、その編集を調整するためにこのメソッドを使用します。このメソッドはドキュメントの範囲外の値を返してはいけません。

acpTestStartINTin挿入するテキストのアプリケーション文字位置の開始位置。
acpTestEndINTin挿入するテキストのアプリケーション文字位置の終了位置。選択されたテキストを置き換えるのではなく、ある位置にテキストを挿入する場合、この値は acpTextStart と等しくなります。
cchDWORDin置換テキストの長さ。
pacpResultStartINT*out挿入されたテキストの新しいアプリケーション文字位置の開始位置を返します。このパラメーターが NULL の場合、指定された位置にテキストを挿入することはできません。この値はドキュメントの範囲外にはできません。
pacpResultEndINT*out挿入されたテキストの新しいアプリケーション文字位置の終了位置を返します。このパラメーターが NULL の場合、pacpResultStart は NULL に設定され、指定された位置にテキストを挿入することはできません。この値はドキュメントの範囲外にはできません。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_FAIL
不特定のエラーが発生しました。
E_INVALIDARG
acpTestStart または acpTestEnd パラメーターが無効です。

解説(Remarks)

pacpResultStart と pacpResultEnd の値は、アプリケーションがドキュメントにテキストをどのように挿入するかによって決まります。pacpResultStart と pacpResultEnd が acpTextStart と同じ場合、挿入後のカーソルは挿入されたテキストの先頭にあります。pacpResultStart と pacpResultEnd が acpTextEnd と同じ場合、挿入後のカーソルは挿入されたテキストの末尾にあります。pacpResultStart と pacpResultEnd の差が挿入されたテキストの長さと等しい場合、挿入後に挿入されたテキストが強調表示されます。

vtbl 8 HRESULT GetSelection(DWORD ulIndex, DWORD ulCount, TS_SELECTION_ACP* pSelection, DWORD* pcFetched)

ドキュメント内のテキスト選択範囲の文字位置を取得します。このメソッドは複数のテキスト選択範囲をサポートします。呼び出し元は、このメソッドを呼び出す前にドキュメントの読み取り専用ロックを保持している必要があります。

ulIndexDWORDin処理を開始するテキスト選択範囲を指定します。このパラメーターに TF_DEFAULT_SELECTION 定数を指定した場合、入力選択範囲から処理が開始されます。
ulCountDWORDin返す選択範囲の最大数を指定します。
pSelectionTS_SELECTION_ACP*out選択されたテキストのスタイル、開始文字位置、終了文字位置を受け取ります。これらの値は TS_SELECTION_ACP 構造体に格納されます。
pcFetchedDWORD*out返された pSelection 構造体の数を受け取ります。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
TS_E_NOLOCK
呼び出し元がドキュメントの読み取り専用ロックを保持していません。
TS_E_NOSELECTION
ドキュメントに選択範囲がありません。
vtbl 9 HRESULT SetSelection(DWORD ulCount, TS_SELECTION_ACP* pSelection)

ドキュメント内のテキストを選択します。アプリケーションは、このメソッドを呼び出す前にドキュメントの読み取り/書き込みロックを保持している必要があります。

ulCountDWORDinpSelection 内のテキスト選択範囲の数を指定します。
pSelectionTS_SELECTION_ACP*in

TS_SELECTION_ACP 構造体を通じて、選択するテキストのスタイル、開始文字位置、終了文字位置を指定します。

開始文字位置と終了文字位置が等しい場合、このメソッドはその文字位置にキャレットを配置します。ドキュメント内に同時に存在できるキャレットは 1 つだけです。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_FAIL
不特定のエラーが発生しました。
TF_E_INVALIDPOS
指定された文字位置がドキュメント内のテキストの範囲を超えています。
TF_E_NOLOCK
呼び出し元が読み取り/書き込みロックを保持していません。
vtbl 10 HRESULT GetText(INT acpStart, INT acpEnd, LPWSTR pchPlain, DWORD cchPlainReq, DWORD* pcchPlainRet, TS_RUNINFO* prgRunInfo, DWORD cRunInfoReq, DWORD* pcRunInfoRet, INT* pacpNext)

指定された文字位置のテキストに関する情報を取得します。このメソッドは表示テキストと非表示テキストを返し、テキストに埋め込みデータが付随しているかどうかを示します。

acpStartINTin開始文字位置を指定します。
acpEndINTin終了文字位置を指定します。このパラメーターが -1 の場合、テキストストア内のすべてのテキストを返します。
pchPlainLPWSTRoutプレーンテキストデータを受け取るバッファーを指定します。このパラメーターが NULL の場合、cchPlainReq パラメーターは 0 でなければなりません。
cchPlainReqDWORDinメソッドに渡すプレーンテキストの文字数を指定します。
pcchPlainRetDWORD*outプレーンテキストバッファーにコピーされた文字数を受け取ります。このパラメーターを NULL にすることはできません。値が不要な場合でもパラメーターを指定してください。
prgRunInfoTS_RUNINFO*outTS_RUNINFO 構造体の配列を受け取ります。NULL にできるのは cRunInfoReq = 0 の場合のみです。
cRunInfoReqDWORDinテキストランバッファーのサイズを文字単位で指定します。
pcRunInfoRetDWORD*outテキストランバッファーに書き込まれた TS_RUNINFO 構造体の数を受け取ります。このパラメーターを NULL にすることはできません。
pacpNextINT*out次の未読文字の文字位置を受け取ります。NULL にはできません。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
TF_E_INVALIDPOS
acpStart または acpEnd パラメーターがドキュメントのテキストの範囲外です。
TF_E_NOLOCK
呼び出し元がドキュメントの読み取り専用ロックを保持していません。

解説(Remarks)

このメソッドを使用する呼び出し元は、RequestLock メソッドを呼び出してドキュメントの読み取り専用ロックを取得しておく必要があります。読み取り専用ロックがない場合、このメソッドは失敗し TF_E_NOLOCK を返します。

また、アプリケーションは内部的な理由でメソッドの戻り値を切り詰めることもあります。呼び出し元は、返された文字数とテキストラン数を注意深く確認して必要な戻り値を取得してください。戻り値が不完全な場合は、完全になるまでメソッドを繰り返し呼び出してください。

呼び出し元は、cRunInfoReq パラメーターを 0 に、prgRunInfo パラメーターを NULL に設定することで、プレーンテキストのみを要求できます。また、cchPlainReq パラメーターを 0 に、pchPlain パラメーターを NULL に設定することで、テキストランのデータのみを要求できます。ただしその場合でも、呼び出し元は pcchPlainRet に有効な非 null の値を指定する必要があります(このパラメーターを使用しない場合でも同様です)。

acpEnd が -1 の場合は、ストリームの末尾が設定されたものとして扱ってください。それ以外の場合は 0 以上の値になります。

終了時には、戻り値で参照されなかったストリーム内の次の文字の文字位置を pacpNext に設定してください。呼び出し元はこれを利用して、複数回の GetText 呼び出しでテキストを素早く走査します。

vtbl 11 HRESULT SetText(DWORD dwFlags, INT acpStart, INT acpEnd, LPWSTR pchText, DWORD cch, TS_TEXTCHANGE* pChange)

指定された文字位置にテキストの選択範囲を設定します。

dwFlagsDWORDinTS_ST_CORRECTION の値が設定されている場合、テキストは既存の内容の変換(修正)であり、.wav ファイルのデータや言語識別子などの特別なテキストマークアップ情報(メタデータ)が保持されます。保持するマークアップ情報の種類はクライアントが定義します。
acpStartINTin置き換えるテキストの開始文字位置を指定します。
acpEndINTin置き換えるテキストの終了文字位置を指定します。値が 1 の場合、このパラメーターは無視されます。
pchTextLPWSTRin置換テキストへのポインターを指定します。テキストの文字数は cch パラメーターで指定するため、テキスト文字列は NULL 終端である必要はありません。
cchDWORDin置換テキストの文字数を指定します。
pChangeTS_TEXTCHANGE*out

次のデータを持つ TS_TEXTCHANGE 構造体へのポインター。

値 意味
acpStart
テキストがドキュメントに挿入される前のアプリケーション文字位置の開始位置。
acpOldEnd
テキストがドキュメントに挿入される前の終了位置。挿入ポイントの場合、この値は acpStart と同じです。この値が acpStart と異なる場合、テキスト挿入前にテキストが選択されていたことを意味します。
acpNewEnd
テキストの挿入が行われた後の終了位置。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
TS_E_INVALIDPOS
acpStart または acpEnd パラメーターがドキュメントのテキストの範囲外です。
TS_E_NOLOCK
呼び出し元が読み取り/書き込みロックを保持していません。
TS_E_READONLY
ドキュメントは読み取り専用です。内容を変更できません。
TS_E_REGION
リージョンの境界をまたいでテキストを変更しようとしました。

解説(Remarks)

アプリケーションは、まず InsertTextAtSelection を使用してコンポジションを開始してください。SetText は既存のコンポジション内でのみ使用してください。SetText の呼び出し時にアクティブなコンポジションがない場合、TSF マネージャーは SetText の呼び出しを包むだけの短命なコンポジションを作成します。

acpStart と acpEnd の文字位置はドキュメントの範囲外にはできません。

アプリケーションは、このメソッドへの応答として OnTextChange メソッドを呼び出してはいけません。

このメソッドは、SetSelection メソッドを呼び出して変更対象のテキストを選択する必要があります。SetSelection メソッドの実行に成功した後、このメソッドは InsertTextAtSelection メソッドを呼び出して実際のテキスト変更を行います。

vtbl 12 HRESULT GetFormattedText(INT acpStart, INT acpEnd, IDataObject** ppDataObject)

指定されたテキスト文字列に関する書式付きテキストデータを取得します。呼び出し元は、このメソッドを呼び出す前にドキュメントの読み取り/書き込みロックを保持している必要があります。

acpStartINTinドキュメント内で取得するテキストの開始文字位置を指定します。
acpEndINTinドキュメント内で取得するテキストの終了文字位置を指定します。値が 1 の場合、このパラメーターは無視されます。
ppDataObjectIDataObject**out書式付きテキストを格納する IDataObject オブジェクトへのポインターを受け取ります。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
TS_E_NOLOCK
呼び出し元がドキュメントの読み取り/書き込みロックを保持していません。
vtbl 13 HRESULT GetEmbedded(INT acpPos, GUID* rguidService, GUID* riid, IUnknown** ppunk)

埋め込みドキュメントを取得します。(ITextStoreACP2.GetEmbedded)

acpPosINTinドキュメント内で、オブジェクトを取得する元となる文字位置を格納します。
rguidServiceGUID*in

取得するオブジェクトの要求形式を定義する GUID 値を格納します。次のいずれかの値を指定できます。

値 意味
GUID_TS_SERVICE_DATAOBJECT
オブジェクトを IDataObject オブジェクトとして取得します。
GUID_TS_SERVICE_ACCESSIBLE
オブジェクトを アクセシブルオブジェクトとして取得します。
GUID_TS_SERVICE_ACTIVEX
オブジェクトを ActiveX オブジェクトとして取得します。
riidGUID*in要求するインターフェースの種類を指定します。
ppunkIUnknown**out要求されたインターフェースを受け取る IUnknown ポインターへのポインター。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。
E_NOTIMPL
アプリケーションは埋め込みオブジェクトをサポートしていません。
TF_E_INVALIDPOS
acpPos がドキュメント内にありません。
TS_E_NOINTERFACE
要求されたインターフェースの種類はサポートされていません。
TS_E_NOLOCK
呼び出し元が読み取り専用ロックを保持していません。
TS_E_NOOBJECT
acpPos に埋め込みオブジェクトがありません。
TS_E_NOSERVICE
rguidService で指定されたサービスの種類はサポートされていません。

解説(Remarks)

適切なインターフェースを調べるには QueryInterface を使用します。対象となるインターフェースには、埋め込みドキュメントやコントロールに関連付けられた IOleObject 、IDataObject 、IViewObject 、IPersistStorage 、IOleCache 、IDispatch などがあります。

vtbl 14 HRESULT QueryInsertEmbedded(GUID* pguidService, FORMATETC* pFormatEtc, BOOL* pfInsertable)

指定されたオブジェクトをドキュメントに挿入できるかどうかを示す値を取得します。(ITextStoreACP2.QueryInsertEmbedded)

pguidServiceGUID*inオブジェクトの種類へのポインター。NULL にできます。
pFormatEtcFORMATETC*inオブジェクトの形式データを格納する FORMATETC 構造体へのポインター。pguidService パラメーターが NULL の場合、このパラメーターを NULL にすることはできません。
pfInsertableBOOL*outそのオブジェクトの種類をドキュメントに挿入できる場合は TRUE、挿入できない場合は FALSE を受け取ります。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pFormatEtc パラメーターが NULL です。

解説(Remarks)

ドキュメントがサポートするクリップボード形式はアプリケーションに依存します。

vtbl 15 HRESULT InsertEmbedded(DWORD dwFlags, INT acpStart, INT acpEnd, IDataObject* pDataObject, TS_TEXTCHANGE* pChange)

指定された文字位置に埋め込みオブジェクトを挿入します。(ITextStoreACP2.InsertEmbedded)

dwFlagsDWORDinTS_IE_CORRECTION でなければなりません。
acpStartINTinオブジェクトを挿入する開始文字位置を格納します。
acpEndINTinオブジェクトを挿入する終了文字位置を格納します。
pDataObjectIDataObject*in挿入されるオブジェクトに関するデータを格納する IDataObject インターフェースへのポインター。
pChangeTS_TEXTCHANGE*out変更されたテキストに関するデータを受け取る TS_TEXTCHANGE 構造体へのポインター。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。
E_NOTIMPL
アプリケーションは埋め込みオブジェクトをサポートしていません。
TS_E_FORMAT
アプリケーションは pDataObject に含まれるデータ型をサポートしていません。
TS_E_INVALIDPOS
acpStart または acpEnd、あるいはその両方がドキュメント内にありません。
TS_E_NOLOCK
呼び出し元が読み取り/書き込みロックを保持していません。
vtbl 16 HRESULT InsertTextAtSelection(DWORD dwFlags, LPWSTR pchText, DWORD cch, INT* pacpStart, INT* pacpEnd, TS_TEXTCHANGE* pChange)

挿入ポイントまたは選択範囲にテキストを挿入します。呼び出し元は、テキストを挿入する前にドキュメントの読み取り/書き込みロックを保持している必要があります。

dwFlagsDWORDin選択位置へのテキスト挿入動作を制御するフラグを指定する。
pchTextLPWSTRin挿入するテキスト文字列へのポインタである。
cchDWORDin挿入するテキストの文字数を指定する。
pacpStartINT*out挿入後のテキスト範囲の開始文字位置を受け取る出力ポインタである。
pacpEndINT*out挿入後のテキスト範囲の終了文字位置を受け取る出力ポインタである。
pChangeTS_TEXTCHANGE*outテキスト変更の内容を記述する TS_TEXTCHANGE を受け取る出力ポインタである。

戻り値

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

pacpStart と pacpEnd パラメーターの値は、クライアントアプリケーションがドキュメントにテキストをどのように挿入するかによって決まります。たとえば、テキスト挿入後にアプリケーションが挿入されたテキストの先頭にカーソルを設定する場合、pacpStart と pacpEnd パラメーターの値は TS_TEXTCHANGE 構造体の acpStart メンバーと同じになります。

アプリケーションは、このメソッドへの応答として OnTextChange メソッドを呼び出してはいけません。

vtbl 17 HRESULT InsertEmbeddedAtSelection(DWORD dwFlags, IDataObject* pDataObject, INT* pacpStart, INT* pacpEnd, TS_TEXTCHANGE* pChange)

挿入ポイントまたは選択範囲に IDataObject を挿入します。このメソッドを呼び出すクライアントは、IDataObject オブジェクトをドキュメントに挿入する前に読み取り/書き込みロックを保持している必要があります。

dwFlagsDWORDin

pacpStart および pacpEnd パラメーターと TS_TEXTCHANGE 構造体にオブジェクト挿入の結果を格納するかどうかを指定します。

TF_IAS_NOQUERY フラグと TF_IAS_QUERYONLY フラグは組み合わせられません。

値 意味
0
テキストの挿入が行われ、pacpStart および pacpEnd パラメーターにテキスト挿入の結果が格納されます。このフラグでは TS_TEXTCHANGE 構造体を埋める必要があります。
TF_IAS_NOQUERY
テキストが挿入され、pacpStart および pacpEnd パラメーターの値は NULL でもかまいませんが、TS_TEXTCHANGE 構造体は埋める必要があります。テキスト挿入の結果が不要な場合にこのフラグを使用します。
TF_IAS_QUERYONLY
テキストは挿入されず、pacpStart および pacpEnd パラメーターの値にテキスト挿入の結果が格納されます。これらのパラメーターの値は、アプリケーションがドキュメントへのテキスト挿入をどのように実装しているかによって決まります。詳細については「解説」を参照してください。

実際にテキストを挿入せずにテキスト挿入の結果を確認する場合(たとえば、選択範囲を折りたたむ、あるいは調整した結果を予測する場合など)にこのフラグを使用します。このフラグでは TS_TEXTCHANGE 構造体を埋める必要はありません。

pDataObjectIDataObject*in挿入する IDataObject オブジェクトへのポインター。
pacpStartINT*outオブジェクトの挿入が行われるアプリケーション文字位置の開始位置へのポインター。
pacpEndINT*outオブジェクトの挿入が行われるアプリケーション文字位置の終了位置へのポインター。挿入ポイントの場合、このパラメーターの値は pacpStart パラメーターの値と同じになります。
pChangeTS_TEXTCHANGE*out

次のメンバーを持つ TS_TEXTCHANGE 構造体へのポインター。

値 意味
acpStart
オブジェクトがドキュメントに挿入される前のアプリケーション文字位置の開始位置。
acpOldEnd
オブジェクトがドキュメントに挿入される前のアプリケーション文字位置の終了位置。挿入ポイントの場合、この値は acpStart と同じです。この値が acpStart と異なる場合、オブジェクト挿入前にテキストが選択されていたことを意味します。
acpNewEnd
オブジェクトの挿入が行われた後のアプリケーション文字位置の終了位置。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pchText パラメーターが無効です。
TS_E_NOLOCK
呼び出し元がドキュメントのロックを保持していません。

解説(Remarks)

pacpStart と pacpEnd パラメーターの値は、クライアントアプリケーションがドキュメントにオブジェクトをどのように挿入するかによって決まります。たとえば、オブジェクト挿入後にアプリケーションがオブジェクトの先頭にカーソルを設定する場合、pacpStart と pacpEnd パラメーターの値は TS_TEXTCHANGE 構造体の acpStart メンバーと同じになります。

vtbl 18 HRESULT RequestSupportedAttrs(DWORD dwFlags, DWORD cFilterAttrs, GUID* paFilterAttrs)

ドキュメントでサポートされている属性を取得します。(ITextStoreACP2.RequestSupportedAttrs)

dwFlagsDWORDin後続の RetrieveRequestedAttrs メソッドの呼び出しにサポート対象の属性を含めるかどうかを指定します。TS_ATTR_FIND_WANT_VALUE フラグが指定された場合、既定の属性値は後続の RetrieveRequestedAttrs 呼び出し後の TS_ATTRVAL 構造体内の値になります。このパラメーターに他のフラグが指定された場合、このメソッドは属性がサポートされていることを確認するだけで、TS_ATTRVAL 構造体の varValue メンバーは VT_EMPTY に設定されます。
cFilterAttrsDWORDin取得するサポート対象属性の数を指定します。
paFilterAttrsGUID*in確認する属性を指定する TS_ATTRID データ型へのポインター。他の属性がサポートされている場合でも、このメソッドは TS_ATTRID で指定された属性のみを返します。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_FAIL
不特定のエラーが発生しました。
E_OUTOFMEMORY
操作を完了するのに十分なメモリを割り当てられませんでした。
vtbl 19 HRESULT RequestAttrsAtPosition(INT acpPos, DWORD cFilterAttrs, GUID* paFilterAttrs, DWORD dwFlags)

指定された文字位置のテキスト属性を取得します。(ITextStoreACP2.RequestAttrsAtPosition)

acpPosINTinドキュメント内のアプリケーション文字位置を指定します。
cFilterAttrsDWORDin取得する属性の数を指定します。
paFilterAttrsGUID*in確認する属性を指定する TS_ATTRID データ型へのポインター。
dwFlagsDWORDin

RetrieveRequestedAttrs メソッドの呼び出しに対する属性を指定します。このパラメーターが設定されていない場合、このメソッドは指定された位置から始まる属性を返します。このパラメーターに指定できるその他の値は次のとおりです。

値 意味
TS_ATTR_FIND_WANT_END
指定されたアプリケーション文字位置で終わる属性を取得します。
TS_ATTR_FIND_WANT_VALUE
属性に加えてその値も取得します。属性値は、RetrieveRequestedAttrs メソッドの呼び出し時に TS_ATTRVAL 構造体の varValue メンバーに格納されます。

戻り値

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

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

解説(Remarks)

「This is italic text.」という文では、イタリック属性は italic という単語の前から始まり、text という単語の後で終わります。

dwFlags に TS_ATTR_FIND_WANT_END フラグが設定されている場合、アンカーの位置に終了の遷移があるため、このメソッドは「italic <anchor>normal」というテキストに対してイタリック属性を返します。

vtbl 20 HRESULT RequestAttrsTransitioningAtPosition(INT acpPos, DWORD cFilterAttrs, GUID* paFilterAttrs, DWORD dwFlags)

指定された文字位置で遷移するテキスト属性を取得します。(ITextStoreACP2.RequestAttrsTransitioningAtPosition)

acpPosINTinドキュメント内のアプリケーション文字位置を指定します。
cFilterAttrsDWORDin取得する属性の数を指定します。
paFilterAttrsGUID*in確認する属性を指定する TS_ATTRID データ型へのポインター。
dwFlagsDWORDin

RetrieveRequestedAttrs メソッドの呼び出しに対する属性を指定します。このパラメーターが設定されていない場合、このメソッドは指定された位置から始まる属性を返します。このパラメーターに指定できるその他の値は次のとおりです。

値 意味
TS_ATTR_FIND_WANT_END
指定されたアプリケーション文字位置で終わる属性を取得します。
TS_ATTR_FIND_WANT_VALUE
属性に加えてその値も取得します。属性値は、RetrieveRequestedAttrs メソッドの呼び出し時に TS_ATTRVAL 構造体の varValue メンバーに格納されます。

戻り値

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

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

解説(Remarks)

「This is italic text.」という文では、イタリック属性は italic という単語の前から始まり、text という単語の後で終わります。

dwFlags に TS_ATTR_FIND_WANT_END フラグが設定されている場合、アンカーの位置に終了の遷移があるため、このメソッドは「italic <anchor>normal」というテキストに対してイタリック属性を返します。

vtbl 21 HRESULT FindNextAttrTransition(INT acpStart, INT acpHalt, DWORD cFilterAttrs, GUID* paFilterAttrs, DWORD dwFlags, INT* pacpNext, BOOL* pfFound, INT* plFoundOffset)

属性値の遷移が発生する文字位置を特定します。確認対象として指定する属性はアプリケーションに依存します。

acpStartINTin属性の遷移の検索を開始する文字位置を指定します。
acpHaltINTin属性の遷移の検索を終了する文字位置を指定します。
cFilterAttrsDWORDin確認する属性の数を指定します。
paFilterAttrsGUID*in確認する属性を指定する TS_ATTRID データ型へのポインター。
dwFlagsDWORDin

属性の遷移を検索する方向を指定します。既定では、このメソッドは前方に検索します。

値 意味
TS_ATTR_FIND_BACKWARDS
このメソッドは後方に検索します。
TS_ATTR_FIND_WANT_OFFSET
plFoundOffset パラメーターが、acpStart からの属性の遷移の文字オフセットを受け取ります。
pacpNextINT*out属性の遷移を確認する次の文字位置を受け取ります。
pfFoundBOOL*out属性の遷移が見つかった場合はブール値 TRUE を、見つからなかった場合は FALSE を受け取ります。
plFoundOffsetINT*out属性の遷移の文字位置(ACP 位置ではありません)を受け取ります。dwFlags に TS_ATTR_FIND_WANT_OFFSET フラグが設定されている場合は、acpStart からの属性の遷移の文字オフセットを受け取ります。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
TS_E_INVALIDPOS
指定された文字位置がドキュメント内のテキストの範囲を超えています。

解説(Remarks)

注意 アプリケーションが FindNextAttrTransition を実装していない場合、ITfReadOnlyProperty::EnumRanges は E_FAIL で失敗します。
vtbl 22 HRESULT RetrieveRequestedAttrs(DWORD ulCount, TS_ATTRVAL* paAttrVals, DWORD* pcFetched)

属性要求メソッドの呼び出しによって返された属性を取得します。(ITextStoreACP2.RetrieveRequestedAttrs)

ulCountDWORDin取得するサポート対象属性の数を指定します。
paAttrValsTS_ATTRVAL*outサポートされている属性を受け取る TS_ATTRVAL 構造体へのポインター。この構造体のメンバーは、呼び出し元のメソッドの dwFlags パラメーターによって決まります。
pcFetchedDWORD*outサポートされている属性の数を受け取ります。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
vtbl 23 HRESULT GetEndACP(INT* pacp)

ドキュメント内の文字数を取得します。

pacpINT*outドキュメント内の最後の文字の文字位置に 1 を加えた値を受け取ります。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_NOTIMPL
アプリケーションがこのメソッドを実装していません。これは通常、終了位置の計算に過大なリソースが必要であることを示します。終了位置が必要な場合は GetText を使用して計算できますが、この操作もディスクから任意の大きさのメモリをページインするため、メモリを大量に消費する可能性があります。
TS_E_NOLOCK
呼び出し元が読み取り専用ロックを保持していません。
vtbl 24 HRESULT GetActiveView(DWORD* pvcView)

現在のアクティブなビューを表す TsViewCookie を取得します。

pvcViewDWORD*out現在のアクティブなビューを指定する TsViewCookie データ型を受け取ります。

戻り値

このメソッドに戻り値はありません。

vtbl 25 HRESULT GetACPFromPoint(DWORD vcView, POINT* ptScreen, DWORD dwFlags, INT* pacp)

スクリーン座標の点をアプリケーション文字位置に変換します。

vcViewDWORDinコンテキストビューを指定します。
ptScreenPOINT*in点のスクリーン座標を格納した POINT 構造体へのポインター。
dwFlagsDWORDin

文字の境界ボックスに対する点のスクリーン座標に基づいて、返す文字位置を指定します。既定では、返される文字位置は点のスクリーン座標を含む文字の境界ボックスです。点が文字の境界ボックスの外にある場合、このメソッドは NULL または TF_E_INVALIDPOINT を返します。このパラメーターのその他のビットフラグは次のとおりです。

これらのビットフラグは組み合わせて使用できます。

値 意味
GXFPF_ROUND_NEAREST
点のスクリーン座標が文字の境界ボックスに含まれる場合、返される文字位置は点のスクリーン座標に最も近い境界の端になります。
GXFPF_NEAREST
点のスクリーン座標が文字の境界ボックスに含まれない場合、最も近い文字位置が返されます。
pacpINT*out点のスクリーン座標に対応する文字位置を受け取ります。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
TS_E_INVALIDPOINT
ptScreen パラメーターがどの文字の境界ボックスにも含まれていません。
TS_E_NOLAYOUT
アプリケーションがテキストレイアウトを計算していません。
vtbl 26 HRESULT GetTextExt(DWORD vcView, INT acpStart, INT acpEnd, RECT* prc, BOOL* pfClipped)

指定された文字位置にあるテキストの境界ボックスをスクリーン座標で取得します。呼び出し元は、このメソッドを呼び出す前にドキュメントの読み取り専用ロックを保持している必要があります。

vcViewDWORDinコンテキストビューを指定します。
acpStartINTinドキュメント内で取得するテキストの開始文字位置を指定します。
acpEndINTinドキュメント内で取得するテキストの終了文字位置を指定します。
prcRECT*out指定された文字位置にあるテキストの境界ボックスをスクリーン座標で受け取ります。
pfClippedBOOL*out境界ボックス内のテキストがクリップされているかどうかを示すブール値を受け取ります。このパラメーターが TRUE の場合、境界ボックスにはクリップされたテキストが含まれており、要求されたテキスト範囲全体は含まれていません。要求された範囲が表示されていないため、境界ボックスはクリップされます。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
TS_E_INVALIDARG
指定された開始文字位置と終了文字位置が同じです。
TS_E_INVALIDPOS
acpStart および acpEnd パラメーターで指定された範囲が、ドキュメントの先頭または末尾を超えています。
TS_E_NOLAYOUT
アプリケーションがテキストレイアウトを計算していません。
TS_E_NOLOCK
呼び出し元がドキュメントの読み取り専用ロックを保持していません。

解説(Remarks)

ドキュメントのウィンドウが最小化されている場合、または指定されたテキストが現在表示されていない場合、このメソッドは prc パラメーターを {0,0,0,0} に設定して S_OK を返します。

vtbl 27 HRESULT GetScreenExt(DWORD vcView, RECT* prc)

テキストストリームが描画される表示面の境界ボックスのスクリーン座標を取得します。

vcViewDWORDinコンテキストビューを指定します。
prcRECT*outドキュメントの表示面の境界ボックスのスクリーン座標を受け取ります。

戻り値

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

値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
指定された vcView パラメーターが無効です。

解説(Remarks)

テキストが現在表示されていない場合(たとえばドキュメントのウィンドウが最小化されている場合など)、prc パラメーターは { 0, 0, 0, 0 } に設定されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ITextStoreACP2 "{F86AD89F-5FE4-4B8D-BB9F-EF3797A84F1F}"
#usecom global ITextStoreACP2 IID_ITextStoreACP2 "{}"
#comfunc global ITextStoreACP2_AdviseSink                           3 var,sptr,int
#comfunc global ITextStoreACP2_UnadviseSink                         4 sptr
#comfunc global ITextStoreACP2_RequestLock                          5 int,var
#comfunc global ITextStoreACP2_GetStatus                            6 var
#comfunc global ITextStoreACP2_QueryInsert                          7 int,int,int,var,var
#comfunc global ITextStoreACP2_GetSelection                         8 int,int,var,var
#comfunc global ITextStoreACP2_SetSelection                         9 int,var
#comfunc global ITextStoreACP2_GetText                              10 int,int,var,int,var,var,int,var,var
#comfunc global ITextStoreACP2_SetText                              11 int,int,int,wstr,int,var
#comfunc global ITextStoreACP2_GetFormattedText                     12 int,int,sptr
#comfunc global ITextStoreACP2_GetEmbedded                          13 int,var,var,sptr
#comfunc global ITextStoreACP2_QueryInsertEmbedded                  14 var,var,var
#comfunc global ITextStoreACP2_InsertEmbedded                       15 int,int,int,sptr,var
#comfunc global ITextStoreACP2_InsertTextAtSelection                16 int,wstr,int,var,var,var
#comfunc global ITextStoreACP2_InsertEmbeddedAtSelection            17 int,sptr,var,var,var
#comfunc global ITextStoreACP2_RequestSupportedAttrs                18 int,int,var
#comfunc global ITextStoreACP2_RequestAttrsAtPosition               19 int,int,var,int
#comfunc global ITextStoreACP2_RequestAttrsTransitioningAtPosition  20 int,int,var,int
#comfunc global ITextStoreACP2_FindNextAttrTransition               21 int,int,int,var,int,var,var,var
#comfunc global ITextStoreACP2_RetrieveRequestedAttrs               22 int,var,var
#comfunc global ITextStoreACP2_GetEndACP                            23 var
#comfunc global ITextStoreACP2_GetActiveView                        24 var
#comfunc global ITextStoreACP2_GetACPFromPoint                      25 int,var,int,var
#comfunc global ITextStoreACP2_GetTextExt                           26 int,int,int,var,var
#comfunc global ITextStoreACP2_GetScreenExt                         27 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。