Win32 API 日本語リファレンス
ホームUI.Controls.RichEdit › ITextSelection

ITextSelection

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID8cc497c1-a1df-11ce-8098-00aa0047be5d継承元ITextRange呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl58

公式ドキュメント

テキストセレクションは、選択のハイライト表示を伴うテキスト範囲(text range)です。

解説(Remarks)

セレクションは何らかのビューに関連付けられており、キーボード入力をエミュレートするための UI 指向のメソッドをいくつか備えています。そのため、アプリケーションはテキストセレクションに対して ITextSelection メソッドだけでなく、ITextRange メソッドも使用できます。

キーボード入力のエミュレーションでは、セレクションで使用される範囲は アクティブ端(active end) という概念を用います。これは通常、最後に移動された端を指します。たとえば、実際にはテキストセレクションである範囲に対して ITextRange::Move* メソッドを実行した場合、最も最近移動された端がアクティブ端になります。アクティブ端の最も身近な例は Shift+方向キーの処理に関するもので、この場合はアクティブ端が移動する側になります。これに応じて、ITextSelection メソッドには、MoveLeftMoveRight のようなアクティブ端を移動するメソッドや、アクティブ端の状態を取得・設定するメソッドが含まれます。これらのメソッドは、標準的なカーソルキーパッドの操作と同様の方法でセレクションを操作します。これにより、たとえばマクロレコーダー機能などを実装できます。

カーソルキーパッドのメソッドがどのように動作するかについては、次の表を参照してください。各メソッドは、Ctrl キーおよび Shift キーと組み合わせたカーソルキーパッドのキーに対応します。Unit パラメーターは Ctrl キーを押すか押さないかで選択され、Extend パラメーターは Shift キーを押すか押さないかで選択されます。なお、MoveUpMoveDown は複数のキーパッドキーに対応します。詳細については、各メソッドの説明を参照してください。

メソッド カーソルキーパッドのキー CTRL を押した場合(押さない場合)の Unit SHIFT を押した場合(押さない場合)の Extend
EndKey End tomStory (tomLine) tomExtend (tomMove)
HomeKey Home tomStory (tomLine) tomExtend (tomMove)
MoveLeft Left Arrow tomWord (tomCharacter) tomExtend (tomMove)
MoveRight Right Arrow tomWord (tomCharacter) tomExtend (tomMove)
MoveUp Up Arrow tomParagraph (tomLine) tomExtend (tomMove)
MoveDown Down Arrow tomParagraph (tomLine) tomExtend (tomMove)
MoveUp Page Up tomWindow (tomScreen) tomExtend (tomMove)
MoveDown Page Down tomWindow (tomScreen) tomExtend (tomMove)

通常、アプリケーションが ITextSelection インターフェイスを実装することはありません。代わりに、リッチエディットコントロールなどの Microsoft のテキストソリューションが、Text Object Model (TOM) 実装の一部として ITextSelection を実装します。

アプリケーションは、GetSelection メソッドを呼び出すことで ITextSelection ポインターを取得できます。

メソッド 10

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 58 HRESULT GetFlags(INT* pFlags)

テキストセレクションのフラグを取得します。

pFlagsINT*out

次のセレクションフラグの任意の組み合わせ。

セレクションフラグ 意味
tomSelStartActive 1 Start 端がアクティブです。
tomSelAtEOL 2 退化した(degenerate)セレクションの場合、行の先頭と直前の行の末尾の両方に対応する曖昧な文字位置では、キャレットを直前の行の末尾に表示する必要があることを示します。
tomSelOvertype 4 挿入/上書き(Insert/Overtype)モードが上書きに設定されています。
tomSelActive 8 セレクションがアクティブです。
tomSelReplace 16 入力および貼り付けによってセレクションが置き換えられます。

表の各値はバイナリ(2 値)です。したがって、ある値が設定されていない場合、テキストセレクションはその反対の性質を持ちます。

戻り値

型: HRESULT

このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。pFlags が null の場合、このメソッドは失敗し、E_INVALIDARG を返します。

vtbl 59 HRESULT SetFlags(INT Flags)

テキストセレクションのフラグを設定します。

FlagsINTin

新しいフラグ値。次の任意の組み合わせを指定できます。

セレクションフラグ 意味
tomSelStartActive 1 Start 端がアクティブです。
tomSelAtEOL 2 退化した(degenerate)セレクションの場合、行の先頭と直前の行の末尾の両方に対応する曖昧な文字位置では、キャレットを直前の行の末尾に表示する必要があることを示します。
tomSelOvertype 4 挿入/上書き(Insert/Overtype)モードが上書きに設定されています。
tomSelActive 8 セレクションがアクティブです。
tomSelReplace 16 入力および貼り付けによってセレクションが置き換えられます。

表の各値はバイナリ(2 値)です。したがって、ある値が設定されていない場合、テキストセレクションはその反対の性質を持ちます。

戻り値

型: HRESULT

このメソッドは S_OK を返します。

解説(Remarks)

Start 端をアクティブにし、曖昧な文字位置を行の末尾に表示するようにするには、次のコードを実行します。

selection.Flags = tomSelStartActive + tomSelAtEOL

Flags プロパティが有用なのは、ITextRange オブジェクトが自分自身を選択できるためです。SetFlags を使用すると、アクティブ端を既定値の End から変更したり、曖昧な文字位置に対するキャレット位置を選択したり、挿入/上書きモードを変更したりできます。

vtbl 60 HRESULT GetType(INT* pType)

テキストセレクションの種類を取得します。

pTypeINT*out

セレクションの種類。このメソッドは、pType に次の表のいずれかの値を返します。

セレクションの種類 意味
tomNoSelection 0 セレクションも挿入ポイントもありません。
tomSelectionIP 1 挿入ポイント。
tomSelectionNormal 2 単一の非退化(nondegenerate)範囲。
tomSelectionFrame 3 フレーム。
tomSelectionColumn 4 テーブルの列。
tomSelectionRow 5 テーブルの行。
tomSelectionBlock 6 ブロック選択。
tomSelectionInlineShape 7 画像。
tomSelectionShape 8 図形。

戻り値

型: StdMETHODIMP

このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。pType が null の場合、このメソッドは失敗し、E_INVALIDARG を返します。

vtbl 61 HRESULT MoveLeft(INT Unit, INT Count, INT Extend, INT* pDelta)

Left Arrow(左方向)キーの機能を一般化したものです。

UnitINTin

使用する単位(Unit)。次のいずれかを指定できます。

対応するキーの組み合わせ 意味
tomCharacter Left Arrow 1 文字分左へ移動します。これが既定値です。
tomWord Ctrl+Left Arrow 1 単語分左へ移動します。

注: Count が 0 未満の場合、移動は右方向になります。

CountINTin移動する Unit の数。既定値は 1 です。Count が 0 未満の場合、移動は右方向になります。
ExtendINTinセレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションをアクティブ端の挿入ポイントに退化させてから移動します。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。Extend が 0 以外の値の場合は、Unit で説明したキーの組み合わせに加えて Shift キーが押されている状態に相当します。
pDeltaINT*out挿入ポイントまたはアクティブ端が実際に左へ移動した単位数。このパラメーターは null にできます。Extend が 0 のときにセレクションを退化させる操作は、1 単位としてカウントされます。

戻り値

型: HRESULT

このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値コード 説明
E_INVALIDARG
Unit が無効です。
S_FALSE
その他の理由による失敗です。

解説(Remarks)

CharRightCharLeftWordRightWordLeft などの WordBasic の移動メソッドは、標準的な方向キーによる編集動作と密接に関連する次の 4 つの処理を行えるハイブリッドです。

MoveLeftMoveRightExtend 引数を使うと上記の最初の 3 項目を実現でき、pDelta は 4 番目を一般化したものです。たとえば、単一の範囲から成るセレクションの場合、次のような対応関係になります(左から右へ記述する文字の場合)。
ITextSelection WordBasic 機能
selection.MoveRight tomWord, 1, 1 WordRight 1,1 アクティブ端を 1 単語分右へ移動します。
selection.MoveLeft tomCharacter, 1, 1 CharLeft 1,1 アクティブ端を 1 文字分左へ移動します。

WordBasic と同様に、Count が 0 未満の場合は左と右の意味が入れ替わります。つまり MoveLeft (Unit, Count, Extend)MoveRight (Unit, -Count, Extend) と同等です。

WordBasic および Left Arrow キーの UI 動作と同様に、退化したセレクションに対して MoveLeft (Unit, Count) を呼び出すと、挿入ポイントが指定された数の Unit 分だけ移動します。退化した範囲に対して、Count が 0 より大きい状態で MoveLeft(Unit, Count, 1) を呼び出すと、範囲は非退化になり、左端がアクティブ端になります。

ExtendtomExtend(または 0 以外)の場合、MoveLeft はセレクションのアクティブ端のみを移動し、もう一方の端はそのままにします。一方、Extend が 0 で、セレクションが最初は非退化な範囲である場合、Count が 0 より大きい状態の MoveLeft(Unit, Count) は、アクティブ端を左へ Count - 1 単位移動し、その後もう一方の端をアクティブ端に移動します。言い換えると、アクティブ端に挿入ポイントを作ります。範囲を退化させる操作は 1 単位としてカウントされます。したがって、MoveLeft(tomCharacter) は非退化なセレクションを、そのセレクションの左端で退化したものに変換します。ここでは、Count は既定値の 1、Extend は既定値の 0 になります。この例は Left Arrow キーを押すことに相当します。MoveLeftMoveRightITextRange の移動メソッドと関連していますが、アクティブ端(Shift キーを押すことで移動する端)を明示的に使う点が異なります。

vtbl 62 HRESULT MoveRight(INT Unit, INT Count, INT Extend, INT* pDelta)

Right Arrow(右方向)キーの機能を一般化したものです。

UnitINTin

使用する単位(Unit)。次のいずれかを指定できます。

対応するキーの組み合わせ 意味
tomCharacter Right Arrow 1 文字分右へ移動します。これが既定値です。
tomWord Ctrl+Right Arrow 1 単語分右へ移動します。

注: Count が 0 未満の場合、移動は左方向になります。

CountINTin移動する Unit の数。既定値は 1 です。Count が 0 未満の場合、移動は左方向になります。
ExtendINTinセレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションをアクティブ端の挿入ポイントに退化させてから移動します。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。Extend が 0 以外の値の場合は、Unit で説明したキーの組み合わせに加えて Shift キーが押されている状態に相当します。
pDeltaINT*out挿入ポイントまたはアクティブ端が実際に左へ移動した単位数。このパラメーターは null にできます。Extend が 0 のときにセレクションを退化させる操作は、1 単位としてカウントされます。

戻り値

型: HRESULT

このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値コード 説明
E_INVALIDARG
Unit が無効です。
S_FALSE
その他の理由による失敗です。

解説(Remarks)

CharRightCharLeftWordRightWordLeft などの Microsoft WordBasic の移動メソッドは、標準的な方向キーによる編集動作と密接に関連する次の 4 つの処理を行えるハイブリッドです。

MoveLeftMoveRightExtend 引数を使うと上記の最初の 3 項目を実現でき、pDelta は 4 番目を一般化したものです。たとえば、単一の範囲から成るセレクション s の場合、次のような対応関係になります(左から右へ記述する文字の場合)。
ITextSelection WordBasic 機能
s.MoveRight tomWord, 1, 1 WordRight 1,1 アクティブ端を 1 単語分右へ移動します。
s.MoveLeft tomCharacter, 1, 1 CharLeft 1,1 アクティブ端を 1 文字分左へ移動します。

WordBasic と同様に、Count が 0 未満の場合は左と右の意味が入れ替わります。つまり MoveLeft (Unit, Count, Extend)MoveRight(Unit, -Count, Extend) と同等です。

WordBasic および Right Arrow キーの UI 動作と同様に、退化したセレクションに対して MoveRight(Unit, Count) を呼び出すと、挿入ポイントが指定された数の単位分だけ移動します。退化した範囲に対して、Count が 0 より大きい状態で MoveRight(Unit, Count, 1) を呼び出すと、範囲は非退化になり、右端がアクティブ端になります。

ExtendtomExtend(または 0 以外)の場合、MoveRight はセレクションのアクティブ端のみを移動し、もう一方の端はそのままにします。一方、Extend が 0 で、セレクションが最初は非退化な範囲である場合、Count が 0 より大きい状態の MoveRight(Unit, Count) は、アクティブ端を右へ Count - 1 単位移動し、その後もう一方の端をアクティブ端に移動します。言い換えると、アクティブ端に挿入ポイントを作ります。範囲を退化させる操作は 1 単位としてカウントされます。したがって、MoveRight(tomCharacter) は非退化なセレクションを、そのセレクションの右端で退化したものに変換します。ここでは、Count は既定値の 1、Extend は既定値の 0 になります。この例は Right Arrow キーを押すことに相当します。MoveLeftMoveRightITextRange の移動メソッドと関連していますが、アクティブ端(Shift キーを押すことで移動する端)を明示的に使う点が異なります。

vtbl 63 HRESULT MoveUp(INT Unit, INT Count, INT Extend, INT* pDelta)

Up Arrow(上方向)キーおよび Page Up キーの機能を模倣します。

UnitINTin

操作で使用する単位(Unit)。次のいずれかを指定できます。

対応するキーの組み合わせ 意味
tomLine Up Arrow 1 行上へ移動します。これが既定値です。
tomParagraph Ctrl+Up Arrow 1 段落上へ移動します。
tomScreen Page Up 1 画面上へ移動します。
tomWindow Ctrl+Page Up ウィンドウ内の先頭文字へ移動します。
CountINTin移動する Units の数。既定値は 1 です。
ExtendINTinセレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションを挿入ポイントに退化させてから移動します。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。Extend が 0 以外の値の場合は、Unit で説明したキーの組み合わせに加えて Shift キーが押されている状態に相当します。
pDeltaINT*out挿入ポイントまたはアクティブ端が実際に下へ移動した単位数。このパラメーターは null にできます。セレクションを退化させる操作は 1 単位としてカウントされます。

戻り値

型: HRESULT

このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値コード 説明
E_INVALIDARG
Unit が無効です。
S_FALSE
その他の理由による失敗です。

解説(Remarks)

MoveUp メソッドと MoveDown メソッドは MoveLeft メソッドおよび MoveRight メソッドと似ていますが、カーソルキーパッドの Up Arrow、Down Arrow、Page Up、Page Down キーの動作を反映する点が異なります。

vtbl 64 HRESULT MoveDown(INT Unit, INT Count, INT Extend, INT* pDelta)

Down Arrow(下方向)キーおよび Page Down キーの機能を模倣します。

UnitINTin

操作で使用する単位(Unit)。次のいずれかを指定できます。

対応するキーの組み合わせ 意味
tomLine Down Arrow 1 行下へ移動します。これが既定値です。
tomParagraph Ctrl+Down Arrow 1 段落下へ移動します。
tomScreen Page Down 1 画面下へ移動します。
tomWindow Ctrl+Page Down ウィンドウ内の末尾文字へ移動します。
CountINTin移動する Unit の数。既定値は 1 です。
ExtendINTinセレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションを挿入ポイントに退化させてから移動します。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。Extend が 0 以外の値の場合は、Unit で説明したキーの組み合わせに加えて Shift キーが押されている状態に相当します。
pDeltaINT*out挿入ポイントまたはアクティブ端が実際に下へ移動した単位数を受け取る変数へのポインター。セレクションを退化させる操作は 1 単位としてカウントされます。このパラメーターは null にできます。

戻り値

型: HRESULT

このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値コード 説明
E_INVALIDARG
Unit が無効です。
S_FALSE
その他の理由による失敗です。

解説(Remarks)

ITextSelection::MoveUp メソッドと ITextSelection::MoveDown メソッドは ITextSelection::MoveLeft メソッドおよび ITextSelection::MoveRight メソッドと似ていますが、カーソルキーパッドの Up Arrow、Down Arrow、Page Up、Page Down キーの動作を反映する点が異なります。

vtbl 65 HRESULT HomeKey(tomConstants Unit, INT Extend, INT* pDelta)

Home キーの機能を一般化したものです。

UnittomConstantsin

Home キー操作で使用する単位(Unit)。次のいずれかの値を指定できます。

意味
tomLine
Extend に応じて、挿入ポイントまたはアクティブ端を、セレクション内の最初の行の先頭へ移動します。これが既定値です。
tomStory
Extend に応じて、挿入ポイントまたはアクティブ端を、ストーリー内の最初の行の先頭へ移動します。
tomColumn
Extend に応じて、挿入ポイントまたはアクティブ端を、セレクション内の最初の列の先頭へ移動します。これは TOM エンジンがテーブルをサポートしている場合にのみ使用できます。
tomRow
Extend に応じて、挿入ポイントまたはアクティブ端を、セレクション内の最初の行の先頭へ移動します。これは TOM エンジンがテーブルをサポートしている場合にのみ使用できます。
ExtendINTinセレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションを挿入ポイントに退化させます。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。
pDeltaINT*out挿入ポイントまたはアクティブ端が移動した文字数を受け取る変数へのポインター。このパラメーターは null にできます。

戻り値

型: HRESULT

このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値コード 説明
E_INVALIDARG
Unit が tomLine でも tomStory でもありません。
S_FALSE
その他の理由による失敗です。

解説(Remarks)

ITextSelection::HomeKey メソッドと ITextSelection::EndKey メソッドは、標準的な Home/End キーの動作を模倣するために使用されます。

tomLine は Ctrl キーを 押さない 状態での Home または End キーの動作を模倣し、tomStory は Ctrl キーを 押した 状態での動作を模倣します。同様に、tomMove は Shift キーを 押さない 状態での Home または End キーの動作を模倣し、tomExtend は Shift キーを 押した 状態での動作を模倣します。したがって、HomeKey(tomStory) はセレクションを、関連付けられたストーリーの先頭にある挿入ポイントに変換します。一方、HomeKey(tomStory, tomExtend) はセレクションのアクティブ端をストーリーの先頭へ移動し、もう一方の端は元の位置に残します。

HomeKey メソッドと EndKey メソッドは、方向に依存するメソッドではなく、Move メソッドと同様の論理的なメソッドです。そのため、対象となる言語に依存します。たとえば、アラビア語のテキストでは HomeKey は行の右端へ移動しますが、英語のテキストでは左端へ移動します。したがって、HomeKey メソッドと EndKey メソッドは ITextSelection::MoveLeft メソッドおよび ITextSelection::MoveRight メソッドとは異なります。また、HomeKey メソッドは、セレクションの先頭の cp を表す Start プロパティとはまったく異なる点にも注意してください。HomeKeyEndKey は、アクティブ端から拡張する点で StartOf メソッドおよび EndOf メソッドとも異なります。StartOf は Start から拡張し、EndOf は End から拡張します。

vtbl 66 HRESULT EndKey(INT Unit, INT Extend, INT* pDelta)

End キーの機能を模倣します。

UnitINTin

使用する単位(Unit)。次のいずれかを指定できます。

意味
tomLine
Extend に応じて、挿入ポイントまたはアクティブ端を、セレクション内の最後の行の末尾へ移動します。これが既定値です。
tomStory
Extend に応じて、挿入ポイントまたはアクティブ端を、ストーリー内の最後の行の末尾へ移動します。
tomColumn
Extend に応じて、挿入ポイントまたはアクティブ端を、セレクション内の最後の列の末尾へ移動します。これは TOM エンジンがテーブルをサポートしている場合にのみ使用できます。
tomRow
Extend に応じて、挿入ポイントまたはアクティブ端を、セレクション内の最後の行の末尾へ移動します。これは TOM エンジンがテーブルをサポートしている場合にのみ使用できます。
ExtendINTinセレクションをどのように変更するかを示すフラグ。Extend が 0(または tomMove)の場合、このメソッドはセレクションを挿入ポイントに退化させます。Extend が 1(または tomExtend)の場合、このメソッドはアクティブ端のみを移動し、もう一方の端はそのままにします。既定値は 0 です。
pDeltaINT*out挿入ポイントまたはアクティブ端が移動した文字数を受け取る変数へのポインター。このパラメーターは null にできます。

戻り値

型: HRESULT

このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値コード 説明
E_INVALIDARG
Unit が tomLine でも tomStory でもありません。
S_FALSE
その他の理由による失敗です。

解説(Remarks)

ExtendtomExtend(または 0 以外)に設定することは、Shift キーが押されている状態に相当します。UnittomLine に設定することは、Ctrl キーが押されていない状態に相当します。UnittomStory に設定することは、Ctrl キーが押されている状態に相当します。pDelta パラメーターは、挿入ポイントまたはアクティブ端が移動した文字数を受け取ります。

ITextSelection::HomeKey メソッドと ITextSelection::EndKey メソッドは、標準的な Home/End キーの動作を模倣するために使用されます。

tomLine 値は Ctrl キーを 押さない 状態での Home または End キーの動作を模倣し、tomStory は Ctrl キーを 押した 状態での動作を模倣します。同様に、tomMove は Shift キーを 押さない 状態での Home または End キーの動作を模倣し、tomExtend は Shift キーを 押した 状態での動作を模倣します。したがって、EndKey(tomStory) はセレクションを、関連付けられたストーリーの末尾にある挿入ポイントに変換します。一方、EndKey(tomStory, tomExtend) はセレクションのアクティブ端をストーリーの末尾へ移動し、もう一方の端は元の位置に残します。

HomeKey メソッドと EndKey メソッドは、方向に依存するメソッドではなく、Move* メソッドと同様の論理的なメソッドです。そのため、対象となる言語に依存します。たとえば、アラビア語のテキストでは HomeKey は行の右端へ移動しますが、英語のテキストでは左端へ移動します。したがって、HomeKeyEndKeyMoveLeft メソッドおよび MoveRight メソッドとは異なります。また、EndKey メソッドは、セレクションの末尾の cp を表す End プロパティとはまったく異なる点にも注意してください。HomeKeyEndKey は、アクティブ端から拡張する点で StartOf メソッドおよび EndOf メソッドとも異なります。StartOf は Start から拡張し、EndOf は End から拡張します。

vtbl 67 HRESULT TypeText(LPWSTR bstr)

bstr で指定された文字列を、あたかも誰かが入力したかのように、このセレクションの位置に入力します。これは基盤となる SetText メソッドと似ていますが、挿入/上書きキーの状態や、オートコレクト、スマートクォートといった UI 設定の影響を受ける点が異なります。

bstrLPWSTRinこのセレクションに入力する文字列。

戻り値

型: HRESULT

このメソッドは HRESULT 値を返します。成功した場合は S_OK を返します。失敗した場合は、次のいずれかのエラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値コード 説明
E_ACCESSDENIED
テキストが書き込み保護されています。
E_INVALIDARG
bstr が null です。
E_OUTOFMEMORY
メモリ不足です。

解説(Remarks)

このメソッドは、bstr で指定された文字列を、あたかも誰かが入力したかのように、このセレクションの位置に入力します。TypeText を使用する方法は、SendMessage 関数を通じて文字を送信するよりも高速ですが、SetText を使用するよりは低速です。

TypeText は基盤となる SetText メソッドと似ていますが、挿入/上書きキーの状態や、オートコレクト、スマートクォートといった UI 設定の影響を受けます。たとえば、非退化なセレクションがあればそれを削除し、その後、挿入ポイントの位置に文字列 bstr を挿入または上書き(挿入/上書きキーの状態に応じて。SetFlags メソッドを参照)します。処理後、このセレクションは挿入されたテキストの直後の挿入ポイントになります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ITextSelection "{8CC497C1-A1DF-11CE-8098-00AA0047BE5D}"
#usecom global ITextSelection IID_ITextSelection "{}"
#comfunc global ITextSelection_GetFlags   58 var
#comfunc global ITextSelection_SetFlags   59 int
#comfunc global ITextSelection_GetType    60 var
#comfunc global ITextSelection_MoveLeft   61 int,int,int,var
#comfunc global ITextSelection_MoveRight  62 int,int,int,var
#comfunc global ITextSelection_MoveUp     63 int,int,int,var
#comfunc global ITextSelection_MoveDown   64 int,int,int,var
#comfunc global ITextSelection_HomeKey    65 int,int,var
#comfunc global ITextSelection_EndKey     66 int,int,var
#comfunc global ITextSelection_TypeText   67 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。