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 メソッドで変更通知を送信したりしてはいけません。報告すべき保留中の変更がある場合、アプリケーションは非同期のロック要求にのみ応答できます。
アプリケーションが必要とするコールバックは 1 回だけであるため、複数の RequestLock メソッド呼び出しをキューに入れようとしてはいけません。ただし、呼び出し元が複数の読み取り要求と 1 つ以上の書き込み要求を行った場合、コールバックは書き込みアクセスに対して行う必要があります。
同期ロックの要求が成功した場合、その要求は非同期ロックの要求に優先します。同期ロックの要求が失敗した場合は、非同期ロックの要求に優先しません。この場合、実装は未処理の非同期要求が存在すればそれを処理する必要があります。
RequestLock メソッドが戻る前にロックが許可された場合、phrSession パラメーターは OnLockGranted メソッドが返した HRESULT を受け取ります。呼び出しは成功したもののロックが後で許可される場合、phrSession パラメーターは TS_S_ASYNC フラグを受け取ります。RequestLock が S_OK 以外を返した場合、phrSession パラメーターは無視してください。
呼び出し元は、このメソッドを再入的に呼び出してはいけません。ただし、呼び出し元が読み取り専用ロックを保持している場合は例外です。この場合、非同期の書き込みロックを要求するために再入的に呼び出すことができます。書き込みロックは読み取り専用ロックの終了後に許可されます。
ドキュメントロックの詳細については、ドキュメントロックを参照してください。
ドキュメントの状態を取得します。ドキュメントの状態は 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 という単語の前から始まり、text という単語の後で終わります。
dwFlags に TS_ATTR_FIND_WANT_END フラグが設定されている場合、アンカーの位置に終了の遷移があるため、このメソッドは「italic <anchor>normal」というテキストに対してイタリック属性を返します。
指定された文字位置で遷移するテキスト属性を取得します。(ITextStoreACP2.RequestAttrsTransitioningAtPosition)
| acpPos | INT | in | ドキュメント内のアプリケーション文字位置を指定します。 | ||||||
| cFilterAttrs | DWORD | in | 取得する属性の数を指定します。 | ||||||
| paFilterAttrs | GUID* | in | 確認する属性を指定する TS_ATTRID データ型へのポインター。 | ||||||
| dwFlags | DWORD | in | RetrieveRequestedAttrs メソッドの呼び出しに対する属性を指定します。このパラメーターが設定されていない場合、このメソッドは指定された位置から始まる属性を返します。このパラメーターに指定できるその他の値は次のとおりです。
|
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
「This is italic text.」という文では、イタリック属性は italic という単語の前から始まり、text という単語の後で終わります。
dwFlags に TS_ATTR_FIND_WANT_END フラグが設定されている場合、アンカーの位置に終了の遷移があるため、このメソッドは「italic <anchor>normal」というテキストに対してイタリック属性を返します。
属性値の遷移が発生する文字位置を特定します。確認対象として指定する属性はアプリケーションに依存します。
| 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 指定が可能。