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 メソッドで変更通知を送信したりしてはなりません。報告すべき変更が保留中の場合、アプリケーションは非同期ロック要求にのみ応答できます。

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

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

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

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

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

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 の場合、pacpResultStartNULL に設定され、指定位置にはテキストを挿入できません。この値はドキュメントの範囲外にはできません。

戻り値

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

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

解説(Remarks)

pacpResultStartpacpResultEnd の値は、アプリケーションがドキュメントにテキストをどのように挿入するかによって異なります。pacpResultStartpacpResultEndacpTextStart と同じ場合、挿入後のカーソルは挿入テキストの先頭に位置します。pacpResultStartpacpResultEndacpTextEnd と同じ場合、挿入後のカーソルは挿入テキストの末尾に位置します。pacpResultStartpacpResultEnd の差が挿入テキストの長さと等しい場合、挿入後に挿入テキストが選択状態(強調表示)になります。

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 を使用します。対象となるインターフェイスには、埋め込みドキュメントやコントロールに関連する IOleObjectIDataObjectIViewObjectIPersistStorageIOleCacheIDispatch などがあります。

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 パラメーターの値は、クライアントアプリケーションがドキュメントにテキストをどのように挿入するかによって異なります。例えば、テキスト挿入後にアプリケーションがカーソルを挿入テキストの先頭に設定する場合、pacpStartpacpEnd パラメーターの値は 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 パラメーターの値は、クライアントアプリケーションがドキュメントにオブジェクトをどのように挿入するかによって異なります。例えば、オブジェクト挿入後にアプリケーションがカーソルをオブジェクトの先頭に設定する場合、pacpStartpacpEnd パラメーターの値は 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 属性は italic という語の手前で始まり、text という語の後ろで終わります。

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

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 属性は italic という語の手前で始まり、text という語の後ろで終わります。

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

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 位置ではありません)を受け取ります。dwFlagsTS_ATTR_FIND_WANT_OFFSET フラグが設定されている場合は、acpStart からの属性遷移までの文字オフセットを受け取ります。

戻り値

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

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

解説(Remarks)

メモ アプリケーションが FindNextAttrTransition を実装していない場合、ITfReadOnlyProperty::EnumRangesE_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 指定が可能。