ITextStoreACP2
COM公式ドキュメント
ITextStoreACP2 インターフェイスはアプリケーション側で実装され、TSF マネージャーが TSF のテキストストリームまたはテキストストアを操作するために使用します。
メソッド 25
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ITextStoreACPSink インターフェイスによる新しいアドバイズシンクをインストールするか、既存のアドバイズシンクを変更します。シンクインターフェイスは punk パラメーターで指定します。
| riid | GUID* | in | シンクインターフェイスを指定します。 |
| punk | IUnknown* | in | シンクインターフェイスへのポインター。NULL は指定できません。 |
| dwMask | DWORD | in | アドバイズシンクへ通知するイベントを指定します。指定可能な値の詳細については、TS_AS_* 定数を参照してください。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| シンクインターフェイスのポインターを取得できませんでした。 | |
| 指定されたシンクインターフェイスはサポートされていません。 | |
| 指定されたシンクオブジェクトを取得できませんでした。 |
TSF マネージャーからの通知がもはや不要であることを示すために、アプリケーションから呼び出されます。TSF マネージャーはシンクインターフェイスを解放し、通知を停止します。
| punk | IUnknown* | in | シンクオブジェクトへのポインター。NULL は指定できません。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 有効なシンクオブジェクトがありません。 |
解説(Remarks)
新しいシンクオブジェクトを登録する AdviseSink メソッドの呼び出しは、必ず本メソッドの呼び出しと対になっている必要があります。既に登録済みのシンクの dwMask パラメーターを更新するだけの AdviseSink メソッドの呼び出しについては、UnadviseSink メソッドを呼び出す必要はありません。
例えば、シンクオブジェクトを登録するには、アプリケーションは最初に AdviseSink メソッドを呼び出します。シンクオブジェクトの登録後は、同じシンクオブジェクトを指定して AdviseSink メソッドを再度呼び出すことで dwMask パラメーターを変更できます。シンクオブジェクトの登録を解除するには、アプリケーションは UnadviseSink メソッドを呼び出します。
punk パラメーターは、AdviseSink メソッドに元々渡したポインターと同一の COM アイデンティティを持つ必要があります。
ドキュメントを変更するためのドキュメントロックを提供する目的で、TSF マネージャーから呼び出されます。このメソッドは OnLockGranted メソッドを呼び出してドキュメントロックを作成します。
| dwLockFlags | DWORD | in | 要求するロックの種類を指定します。
| ||||||||
| phrSession | HRESULT* | out | ロック要求が同期的な場合、ロック要求の結果を示す OnLockGranted メソッドからの HRESULT 値を受け取ります。 ロック要求が非同期的で結果が TS_S_ASYNC の場合、ドキュメントは非同期ロックを取得します。ロック要求が非同期的で結果が TS_E_SYNCHRONOUS の場合、ドキュメントを同期的にロックすることはできません。 |
戻り値
解説(Remarks)
このメソッドは OnLockGranted メソッドを使用してドキュメントをロックします。アプリケーションは、RequestLock メソッド内でドキュメントを変更したり、OnTextChange メソッドで変更通知を送信したりしてはなりません。報告すべき変更が保留中の場合、アプリケーションは非同期ロック要求にのみ応答できます。
アプリケーションは複数の RequestLock メソッド呼び出しをキューイングしようとすべきではありません。アプリケーションが必要とするコールバックは 1 つだけだからです。ただし、呼び出し元が複数の読み取り要求と 1 つ以上の書き込み要求を行った場合、コールバックは書き込みアクセスに対して行われるべきです。
同期ロック要求が成功した場合、その要求は非同期ロック要求に優先します。同期ロック要求が失敗した場合は、非同期ロック要求に優先しません。実装側は、未処理の非同期要求が存在する場合、その要求に引き続き応じる必要があります。
RequestLock メソッドが復帰する前にロックが許可された場合、phrSession パラメーターは OnLockGranted メソッドが返した HRESULT を受け取ります。呼び出しが成功したものの、ロックが後から許可される場合、phrSession パラメーターは TS_S_ASYNC フラグを受け取ります。RequestLock が S_OK 以外を返した場合、phrSession パラメーターは無視すべきです。
呼び出し元は、このメソッドを再入的に呼び出してはなりません。ただし、読み取り専用ロックを保持している場合は例外で、この場合は非同期の書き込みロックを要求するために再入的に呼び出すことができます。書き込みロックは、読み取り専用ロックの終了後に許可されます。
ドキュメントロックの詳細については、Document Locks を参照してください。
ドキュメントの状態を取得します。ドキュメントの状態は TS_STATUS 構造体を通じて返されます。
| pdcs | TS_STATUS* | out | ドキュメントの状態を格納した TS_STATUS 構造体を受け取ります。NULL は指定できません。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| TS_STATUS パラメーターへのポインターが無効です。 |
指定された開始文字位置と終了文字位置が有効かどうかを判定します。ドキュメントへの編集を実行する前に、その編集内容を調整するために使用します。このメソッドはドキュメントの範囲外の値を返してはなりません。
| acpTestStart | INT | in | 挿入するテキストの開始アプリケーション文字位置です。 |
| acpTestEnd | INT | in | 挿入するテキストの終了アプリケーション文字位置です。選択テキストを置き換えるのではなく、ある一点に挿入する場合、この値は acpTextStart と等しくなります。 |
| cch | DWORD | in | 置換テキストの長さです。 |
| pacpResultStart | INT* | out | 挿入されたテキストの新しい開始アプリケーション文字位置を返します。このパラメーターが NULL の場合、指定位置にはテキストを挿入できません。この値はドキュメントの範囲外にはできません。 |
| pacpResultEnd | INT* | out | 挿入されたテキストの新しい終了アプリケーション文字位置を返します。このパラメーターが NULL の場合、pacpResultStart も NULL に設定され、指定位置にはテキストを挿入できません。この値はドキュメントの範囲外にはできません。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 不特定のエラーが発生しました。 | |
| acpTestStart または acpTestEnd パラメーターが無効です。 |
解説(Remarks)
pacpResultStart と pacpResultEnd の値は、アプリケーションがドキュメントにテキストをどのように挿入するかによって異なります。pacpResultStart と pacpResultEnd が acpTextStart と同じ場合、挿入後のカーソルは挿入テキストの先頭に位置します。pacpResultStart と pacpResultEnd が acpTextEnd と同じ場合、挿入後のカーソルは挿入テキストの末尾に位置します。pacpResultStart と pacpResultEnd の差が挿入テキストの長さと等しい場合、挿入後に挿入テキストが選択状態(強調表示)になります。
ドキュメント内のテキスト選択範囲の文字位置を取得します。このメソッドは複数のテキスト選択範囲に対応します。呼び出し元は、このメソッドを呼び出す前にドキュメントの読み取り専用ロックを保持している必要があります。
| ulIndex | DWORD | in | 処理を開始するテキスト選択範囲を指定します。このパラメーターに TF_DEFAULT_SELECTION 定数を指定した場合、入力選択範囲から処理を開始します。 |
| ulCount | DWORD | in | 返す選択範囲の最大数を指定します。 |
| pSelection | TS_SELECTION_ACP* | out | 選択されたテキストのスタイル、開始文字位置、終了文字位置を受け取ります。これらの値は TS_SELECTION_ACP 構造体に格納されます。 |
| pcFetched | DWORD* | out | 返された pSelection 構造体の数を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 呼び出し元がドキュメントの読み取り専用ロックを保持していません。 | |
| ドキュメントに選択範囲がありません。 |
ドキュメント内のテキストを選択します。アプリケーションは、このメソッドを呼び出す前にドキュメントの読み取り/書き込みロックを保持している必要があります。
| ulCount | DWORD | in | pSelection に含まれるテキスト選択範囲の数を指定します。 |
| pSelection | TS_SELECTION_ACP* | in | TS_SELECTION_ACP 構造体を通じて、選択するテキストのスタイル、開始文字位置、終了文字位置を指定します。 開始文字位置と終了文字位置が等しい場合、このメソッドはその文字位置にキャレットを配置します。ドキュメント内に同時に存在できるキャレットは 1 つだけです。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 不特定のエラーが発生しました。 | |
| 指定された文字位置がドキュメント内のテキストの範囲を超えています。 | |
| 呼び出し元が読み取り/書き込みロックを保持していません。 |
指定した文字位置のテキストに関する情報を取得します。このメソッドは可視テキストと不可視テキストを返し、テキストに埋め込みデータが付随しているかどうかを示します。
| acpStart | INT | in | 開始文字位置を指定します。 |
| acpEnd | INT | in | 終了文字位置を指定します。このパラメーターが -1 の場合、テキストストア内のすべてのテキストを返します。 |
| pchPlain | LPWSTR | out | プレーンテキストデータを受け取るバッファーを指定します。このパラメーターが NULL の場合、cchPlainReq パラメーターは 0 でなければなりません。 |
| cchPlainReq | DWORD | in | メソッドに渡すプレーンテキストの文字数を指定します。 |
| pcchPlainRet | DWORD* | out | プレーンテキストバッファーにコピーされた文字数を受け取ります。このパラメーターに NULL は指定できません。値が不要な場合でもパラメーターを渡してください。 |
| prgRunInfo | TS_RUNINFO* | out | TS_RUNINFO 構造体の配列を受け取ります。NULL にできるのは cRunInfoReq = 0 の場合のみです。 |
| cRunInfoReq | DWORD | in | テキストランバッファーのサイズを文字単位で指定します。 |
| pcRunInfoRet | DWORD* | out | テキストランバッファーに書き込まれた TS_RUNINFO 構造体の数を受け取ります。このパラメーターに NULL は指定できません。 |
| pacpNext | INT* | out | 次の未読文字の文字位置を受け取ります。NULL は指定できません。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| acpStart または acpEnd パラメーターがドキュメントのテキスト範囲外です。 | |
| 呼び出し元がドキュメントの読み取り専用ロックを保持していません。 |
解説(Remarks)
このメソッドを使用する呼び出し元は、RequestLock メソッドを呼び出してドキュメントの読み取り専用ロックを取得している必要があります。読み取り専用ロックがない場合、このメソッドは失敗し TF_E_NOLOCK を返します。
また、アプリケーションは内部的な理由からメソッドの戻り値を切り詰めることがあります。呼び出し元は、返された文字数とテキストランの数を注意深く確認し、必要な戻り値を取得してください。戻り値が不完全な場合は、完全になるまでメソッドを繰り返し呼び出してください。
呼び出し元は、cRunInfoReq パラメーターを 0、prgRunInfo パラメーターを NULL に設定することで、プレーンテキストのみを要求できます。また、cchPlainReq パラメーターを 0、pchPlain パラメーターを NULL に設定することで、テキストランのデータのみを要求できます。ただし、pcchPlainRet については、使用しない場合でも有効な非 NULL の値を指定する必要があります。
acpEnd が -1 の場合は、ストリームの末尾が指定されたものとして扱ってください。それ以外の場合、この値は 0 以上になります。
復帰時、pacpNext には、戻り値で参照されなかったストリーム内の次の文字の文字位置を設定してください。呼び出し元はこれを利用して、複数回の GetText 呼び出しによりテキストを高速に走査できます。
指定された文字位置にテキスト選択範囲を設定します。
| dwFlags | DWORD | in | TS_ST_CORRECTION が設定されている場合、そのテキストは既存の内容の変換(修正)であり、.wav ファイルデータや言語識別子などの特別なテキストマークアップ情報(メタデータ)が保持されます。保持するマークアップ情報の種類はクライアントが定義します。 | ||||||||
| acpStart | INT | in | 置換するテキストの開始文字位置を指定します。 | ||||||||
| acpEnd | INT | in | 置換するテキストの終了文字位置を指定します。値が 1 の場合、このパラメーターは無視されます。 | ||||||||
| pchText | LPWSTR | in | 置換テキストへのポインターを指定します。文字数は cch パラメーターで指定するため、テキスト文字列は NULL 終端である必要はありません。 | ||||||||
| cch | DWORD | in | 置換テキストの文字数を指定します。 | ||||||||
| pChange | TS_TEXTCHANGE* | out | 次のデータを持つ TS_TEXTCHANGE 構造体へのポインターです。
|
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| acpStart または acpEnd パラメーターがドキュメントのテキスト範囲外です。 | |
| 呼び出し元が読み取り/書き込みロックを保持していません。 | |
| ドキュメントは読み取り専用です。内容を変更できません。 | |
|
リージョンの境界をまたいでテキストを変更しようとしました。 |
解説(Remarks)
アプリケーションは、まず InsertTextAtSelection を使用してコンポジション(変換中の文字列)を開始すべきです。SetText は既存のコンポジション内でのみ使用してください。SetText の呼び出し時に有効なコンポジションが存在しない場合、TSF マネージャーは SetText の呼び出しを包む最小限の期間だけ存続するコンポジションを作成します。
acpStart および acpEnd の文字位置は、ドキュメントの範囲外にはできません。
アプリケーションは、このメソッドへの応答として OnTextChange メソッドを呼び出してはなりません。
このメソッドは、SetSelection メソッドを呼び出して変更対象のテキストを選択する必要があります。SetSelection メソッドが正常に実行された後、このメソッドは InsertTextAtSelection メソッドを呼び出して実際のテキスト変更を行います。
指定したテキスト文字列に関する書式付きテキストデータを取得します。呼び出し元は、このメソッドを呼び出す前にドキュメントの読み取り/書き込みロックを保持している必要があります。
| acpStart | INT | in | ドキュメント内で取得するテキストの開始文字位置を指定します。 |
| acpEnd | INT | in | ドキュメント内で取得するテキストの終了文字位置を指定します。値が 1 の場合、このパラメーターは無視されます。 |
| ppDataObject | IDataObject** | out | 書式付きテキストを含む IDataObject オブジェクトへのポインターを受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 呼び出し元がドキュメントの読み取り/書き込みロックを保持していません。 |
埋め込みドキュメントを取得します。(ITextStoreACP2.GetEmbedded)
| acpPos | INT | in | ドキュメント内で、オブジェクトを取得する文字位置を指定します。 | ||||||||
| rguidService | GUID* | in | 取得するオブジェクトの要求形式を定義する GUID 値を指定します。次のいずれかの値を指定できます。
| ||||||||
| riid | GUID* | in | 要求するインターフェイスの種類を指定します。 | ||||||||
| ppunk | IUnknown** | out | 要求したインターフェイスを受け取る IUnknown ポインターへのポインターです。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 1 つ以上のパラメーターが無効です。 | |
| アプリケーションは埋め込みオブジェクトをサポートしていません。 | |
| acpPos がドキュメント内にありません。 | |
| 要求されたインターフェイスの種類はサポートされていません。 | |
| 呼び出し元が読み取り専用ロックを保持していません。 | |
| acpPos に埋め込みオブジェクトがありません。 | |
| rguidService で指定されたサービスの種類はサポートされていません。 |
解説(Remarks)
適切なインターフェイスを調べるには QueryInterface を使用します。対象となるインターフェイスには、埋め込みドキュメントやコントロールに関連する IOleObject、IDataObject、IViewObject、IPersistStorage、IOleCache、IDispatch などがあります。
指定されたオブジェクトをドキュメントに挿入できるかどうかを示す値を取得します。(ITextStoreACP2.QueryInsertEmbedded)
| pguidService | GUID* | in | オブジェクトの種類へのポインターです。NULL を指定できます。 |
| pFormatEtc | FORMATETC* | in | オブジェクトの形式データを含む FORMATETC 構造体へのポインターです。pguidService パラメーターが NULL の場合、このパラメーターに NULL は指定できません。 |
| pfInsertable | BOOL* | out | そのオブジェクトの種類をドキュメントに挿入できる場合は TRUE、挿入できない場合は FALSE を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pFormatEtc パラメーターが NULL です。 |
解説(Remarks)
ドキュメントがサポートするクリップボード形式は、アプリケーションによって異なります。
指定した文字位置に埋め込みオブジェクトを挿入します。(ITextStoreACP2.InsertEmbedded)
| dwFlags | DWORD | in | TS_IE_CORRECTION でなければなりません。 |
| acpStart | INT | in | オブジェクトを挿入する開始文字位置を指定します。 |
| acpEnd | INT | in | オブジェクトを挿入する終了文字位置を指定します。 |
| pDataObject | IDataObject* | in | 挿入するオブジェクトのデータを含む IDataObject インターフェイスへのポインターです。 |
| pChange | TS_TEXTCHANGE* | out | 変更されたテキストに関するデータを受け取る TS_TEXTCHANGE 構造体へのポインターです。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 1 つ以上のパラメーターが無効です。 | |
| アプリケーションは埋め込みオブジェクトをサポートしていません。 | |
| アプリケーションは pDataObject に含まれるデータ型をサポートしていません。 | |
| acpStart または acpEnd、あるいはその両方がドキュメント内にありません。 | |
| 呼び出し元が読み取り/書き込みロックを保持していません。 |
挿入ポイントまたは選択範囲にテキストを挿入します。呼び出し元は、テキストを挿入する前にドキュメントの読み取り/書き込みロックを保持している必要があります。
| dwFlags | DWORD | in | 選択位置へのテキスト挿入動作を制御するフラグを指定する。 |
| pchText | LPWSTR | in | 挿入するテキスト文字列へのポインタである。 |
| cch | DWORD | in | 挿入するテキストの文字数を指定する。 |
| pacpStart | INT* | out | 挿入後のテキスト範囲の開始文字位置を受け取る出力ポインタである。 |
| pacpEnd | INT* | out | 挿入後のテキスト範囲の終了文字位置を受け取る出力ポインタである。 |
| pChange | TS_TEXTCHANGE* | out | テキスト変更の内容を記述する TS_TEXTCHANGE を受け取る出力ポインタである。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT のエラーコードを返します。
解説(Remarks)
pacpStart および pacpEnd パラメーターの値は、クライアントアプリケーションがドキュメントにテキストをどのように挿入するかによって異なります。例えば、テキスト挿入後にアプリケーションがカーソルを挿入テキストの先頭に設定する場合、pacpStart と pacpEnd パラメーターの値は TS_TEXTCHANGE 構造体の acpStart メンバーと同じ値になります。
アプリケーションは、このメソッドへの応答として OnTextChange メソッドを呼び出してはなりません。
挿入ポイントまたは選択範囲に IDataObject を挿入します。このメソッドを呼び出すクライアントは、IDataObject オブジェクトをドキュメントに挿入する前に読み取り/書き込みロックを保持している必要があります。
| dwFlags | DWORD | in | pacpStart および pacpEnd パラメーターと TS_TEXTCHANGE 構造体に、オブジェクト挿入の結果を格納するかどうかを指定します。 TF_IAS_NOQUERY フラグと TF_IAS_QUERYONLY フラグは組み合わせられません。
| ||||||||
| pDataObject | IDataObject* | in | 挿入する IDataObject オブジェクトへのポインターです。 | ||||||||
| pacpStart | INT* | out | オブジェクトの挿入が行われる開始アプリケーション文字位置へのポインターです。 | ||||||||
| pacpEnd | INT* | out | オブジェクトの挿入が行われる終了アプリケーション文字位置へのポインターです。挿入ポイントの場合、このパラメーターの値は pacpStart パラメーターの値と同じになります。 | ||||||||
| pChange | TS_TEXTCHANGE* | out | 次のメンバーを持つ TS_TEXTCHANGE 構造体へのポインターです。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pchText パラメーターが無効です。 | |
| 呼び出し元がドキュメントのロックを保持していません。 |
解説(Remarks)
pacpStart および pacpEnd パラメーターの値は、クライアントアプリケーションがドキュメントにオブジェクトをどのように挿入するかによって異なります。例えば、オブジェクト挿入後にアプリケーションがカーソルをオブジェクトの先頭に設定する場合、pacpStart と pacpEnd パラメーターの値は TS_TEXTCHANGE 構造体の acpStart メンバーと同じ値になります。
ドキュメントでサポートされている属性を取得します。(ITextStoreACP2.RequestSupportedAttrs)
| dwFlags | DWORD | in | 後続の RetrieveRequestedAttrs メソッドの呼び出しでサポート対象の属性が返されるかどうかを指定します。TS_ATTR_FIND_WANT_VALUE フラグを指定した場合、後続の RetrieveRequestedAttrs 呼び出し後に、既定の属性値が TS_ATTRVAL 構造体に格納されます。このパラメーターにそれ以外のフラグを指定した場合、このメソッドは属性がサポートされているかどうかを検証するだけで、TS_ATTRVAL 構造体の varValue メンバーは VT_EMPTY に設定されます。 |
| cFilterAttrs | DWORD | in | 取得するサポート対象属性の数を指定します。 |
| paFilterAttrs | GUID* | in | 検証する属性を指定する TS_ATTRID データ型へのポインターです。他の属性がサポートされている場合でも、このメソッドは TS_ATTRID で指定された属性のみを返します。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 不特定のエラーが発生しました。 | |
| 処理を完了するのに十分なメモリを割り当てられませんでした。 |
指定した文字位置のテキスト属性を取得します。(ITextStoreACP2.RequestAttrsAtPosition)
| acpPos | INT | in | ドキュメント内のアプリケーション文字位置を指定します。 | ||||||
| cFilterAttrs | DWORD | in | 取得する属性の数を指定します。 | ||||||
| paFilterAttrs | GUID* | in | 検証する属性を指定する TS_ATTRID データ型へのポインターです。 | ||||||
| dwFlags | DWORD | in | RetrieveRequestedAttrs メソッド呼び出しに対する属性を指定します。このパラメーターを設定しない場合、このメソッドは指定位置から始まる属性を返します。このパラメーターに指定できるその他の値は次のとおりです。
|
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
"This is italic text." という文では、italic 属性は italic という語の手前で始まり、text という語の後ろで終わります。
dwFlags に TS_ATTR_FIND_WANT_END フラグが設定されている場合、アンカーの位置に終了の遷移があるため、このメソッドはテキスト "italic <anchor>normal" に対して italic 属性を返します。
指定した文字位置で遷移するテキスト属性を取得します。(ITextStoreACP2.RequestAttrsTransitioningAtPosition)
| acpPos | INT | in | ドキュメント内のアプリケーション文字位置を指定します。 | ||||||
| cFilterAttrs | DWORD | in | 取得する属性の数を指定します。 | ||||||
| paFilterAttrs | GUID* | in | 検証する属性を指定する TS_ATTRID データ型へのポインターです。 | ||||||
| dwFlags | DWORD | in | RetrieveRequestedAttrs メソッド呼び出しに対する属性を指定します。このパラメーターを設定しない場合、このメソッドは指定位置から始まる属性を返します。このパラメーターに指定できるその他の値は次のとおりです。
|
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
"This is italic text." という文では、italic 属性は italic という語の手前で始まり、text という語の後ろで終わります。
dwFlags に TS_ATTR_FIND_WANT_END フラグが設定されている場合、アンカーの位置に終了の遷移があるため、このメソッドはテキスト "italic <anchor>normal" に対して italic 属性を返します。
属性値の遷移が発生する文字位置を判定します。確認する属性はアプリケーションによって異なります。
| acpStart | INT | in | 属性の遷移の検索を開始する文字位置を指定します。 | ||||||
| acpHalt | INT | in | 属性の遷移の検索を終了する文字位置を指定します。 | ||||||
| cFilterAttrs | DWORD | in | 確認する属性の数を指定します。 | ||||||
| paFilterAttrs | GUID* | in | 確認する属性を指定する TS_ATTRID データ型へのポインターです。 | ||||||
| dwFlags | DWORD | in | 属性の遷移を検索する方向を指定します。既定では、このメソッドは前方に向かって検索します。
| ||||||
| pacpNext | INT* | out | 属性の遷移を確認する次の文字位置を受け取ります。 | ||||||
| pfFound | BOOL* | out | 属性の遷移が見つかった場合はブール値 TRUE、見つからなかった場合は FALSE を受け取ります。 | ||||||
| plFoundOffset | INT* | out | 属性の遷移の文字位置(ACP 位置ではありません)を受け取ります。dwFlags に TS_ATTR_FIND_WANT_OFFSET フラグが設定されている場合は、acpStart からの属性遷移までの文字オフセットを受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定された文字位置がドキュメント内のテキストの範囲を超えています。 |
解説(Remarks)
属性要求メソッドの呼び出しによって返された属性を取得します。(ITextStoreACP2.RetrieveRequestedAttrs)
| ulCount | DWORD | in | 取得するサポート対象属性の数を指定します。 |
| paAttrVals | TS_ATTRVAL* | out | サポート対象の属性を受け取る TS_ATTRVAL 構造体へのポインターです。この構造体のメンバーは、呼び出し元メソッドの dwFlags パラメーターによって異なります。 |
| pcFetched | DWORD* | out | サポート対象の属性の数を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
ドキュメント内の文字数を取得します。
| pacp | INT* | out | ドキュメント内の最後の文字の文字位置に 1 を加えた値を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| アプリケーションがこのメソッドを実装していません。これは通常、終了位置の計算に過大なリソースが必要であることを示します。終了位置がどうしても必要な場合は GetText を使用して計算できますが、この操作もディスクから任意の大きさのメモリをページインする、メモリを大量に消費する処理になる可能性があります。 | |
| 呼び出し元が読み取り専用ロックを保持していません。 |
現在アクティブなビューを表す TsViewCookie を取得します。
| pvcView | DWORD* | out | 現在アクティブなビューを指定する TsViewCookie データ型を受け取ります。 |
戻り値
このメソッドに戻り値はありません。
スクリーン座標上の点をアプリケーション文字位置に変換します。
| vcView | DWORD | in | コンテキストのビューを指定します。 | ||||||
| ptScreen | POINT* | in | 点のスクリーン座標を保持する POINT 構造体へのポインターです。 | ||||||
| dwFlags | DWORD | in | 文字の外接矩形(バウンディングボックス)に対する点のスクリーン座標に基づいて、返す文字位置を指定します。既定では、返される文字位置は、その点のスクリーン座標を含む文字の外接矩形になります。点が文字の外接矩形の外側にある場合、このメソッドは NULL または TF_E_INVALIDPOINT を返します。このパラメーターに指定できるその他のビットフラグは次のとおりです。 これらのビットフラグは組み合わせて指定できます。
| ||||||
| pacp | INT* | out | 点のスクリーン座標に対応する文字位置を受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| ptScreen パラメーターがどの文字の外接矩形内にもありません。 | |
| アプリケーションがテキストレイアウトを計算していません。 |
指定した文字位置のテキストの外接矩形をスクリーン座標で取得します。呼び出し元は、このメソッドを呼び出す前にドキュメントの読み取り専用ロックを保持している必要があります。
| vcView | DWORD | in | コンテキストのビューを指定します。 |
| acpStart | INT | in | ドキュメント内で取得するテキストの開始文字位置を指定します。 |
| acpEnd | INT | in | ドキュメント内で取得するテキストの終了文字位置を指定します。 |
| prc | RECT* | out | 指定した文字位置のテキストの外接矩形をスクリーン座標で受け取ります。 |
| pfClipped | BOOL* | out | 外接矩形内のテキストがクリップされているかどうかを示すブール値を受け取ります。このパラメーターが TRUE の場合、外接矩形にはクリップされたテキストが含まれ、要求されたテキスト範囲全体は含まれません。要求された範囲が表示されていないため、外接矩形がクリップされています。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
指定された開始文字位置と終了文字位置が同じです。 |
| acpStart および acpEnd パラメーターで指定された範囲が、ドキュメントの先頭または末尾を超えています。 | |
| アプリケーションがテキストレイアウトを計算していません。 | |
| 呼び出し元がドキュメントの読み取り専用ロックを保持していません。 |
解説(Remarks)
ドキュメントウィンドウが最小化されている場合や、指定されたテキストが現在表示されていない場合、このメソッドは prc パラメーターを {0,0,0,0} に設定して S_OK を返します。
テキストストリームが描画される表示面の外接矩形をスクリーン座標で取得します。
| vcView | DWORD | in | コンテキストのビューを指定します。 |
| prc | RECT* | out | ドキュメントの表示面の外接矩形をスクリーン座標で受け取ります。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定された vcView パラメーターが無効です。 |
解説(Remarks)
ドキュメントウィンドウが最小化されている場合など、テキストが現在表示されていない場合、prc パラメーターは { 0, 0, 0, 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 指定が可能。#define global IID_ITextStoreACP2 "{F86AD89F-5FE4-4B8D-BB9F-EF3797A84F1F}" #usecom global ITextStoreACP2 IID_ITextStoreACP2 "{}" #comfunc global ITextStoreACP2_AdviseSink 3 sptr,sptr,int #comfunc global ITextStoreACP2_UnadviseSink 4 sptr #comfunc global ITextStoreACP2_RequestLock 5 int,sptr #comfunc global ITextStoreACP2_GetStatus 6 sptr #comfunc global ITextStoreACP2_QueryInsert 7 int,int,int,sptr,sptr #comfunc global ITextStoreACP2_GetSelection 8 int,int,sptr,sptr #comfunc global ITextStoreACP2_SetSelection 9 int,sptr #comfunc global ITextStoreACP2_GetText 10 int,int,sptr,int,sptr,sptr,int,sptr,sptr #comfunc global ITextStoreACP2_SetText 11 int,int,int,wstr,int,sptr #comfunc global ITextStoreACP2_GetFormattedText 12 int,int,sptr #comfunc global ITextStoreACP2_GetEmbedded 13 int,sptr,sptr,sptr #comfunc global ITextStoreACP2_QueryInsertEmbedded 14 sptr,sptr,sptr #comfunc global ITextStoreACP2_InsertEmbedded 15 int,int,int,sptr,sptr #comfunc global ITextStoreACP2_InsertTextAtSelection 16 int,wstr,int,sptr,sptr,sptr #comfunc global ITextStoreACP2_InsertEmbeddedAtSelection 17 int,sptr,sptr,sptr,sptr #comfunc global ITextStoreACP2_RequestSupportedAttrs 18 int,int,sptr #comfunc global ITextStoreACP2_RequestAttrsAtPosition 19 int,int,sptr,int #comfunc global ITextStoreACP2_RequestAttrsTransitioningAtPosition 20 int,int,sptr,int #comfunc global ITextStoreACP2_FindNextAttrTransition 21 int,int,int,sptr,int,sptr,sptr,sptr #comfunc global ITextStoreACP2_RetrieveRequestedAttrs 22 int,sptr,sptr #comfunc global ITextStoreACP2_GetEndACP 23 sptr #comfunc global ITextStoreACP2_GetActiveView 24 sptr #comfunc global ITextStoreACP2_GetACPFromPoint 25 int,sptr,int,sptr #comfunc global ITextStoreACP2_GetTextExt 26 int,int,int,sptr,sptr #comfunc global ITextStoreACP2_GetScreenExt 27 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。