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

ITextHost

COM
継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ITextHost インターフェイスは、テキストサービスオブジェクトがテキストホストサービスを取得するために使用します。

解説(Remarks)

CreateTextServices 関数を呼び出す前に、ITextHost インターフェイスを実装する必要があります。

アプリケーションが ITextHost のメソッドを呼び出すことはありません。CreateTextServices 関数によって作成されたテキストサービスオブジェクトが、このインターフェイスのメソッドを呼び出します。

メソッド 39

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

vtbl 3 HDC TxGetDC()

テキストホストウィンドウのデバイスコンテキストを要求します。

戻り値

型: HDC

メソッドが成功した場合は、テキストホストウィンドウのクライアント領域のデバイスコンテキストのハンドルを返します。

メソッドが失敗した場合は NULL を返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 4 INT TxReleaseDC(HDC hdc)

ITextHost::TxGetDC メソッドで取得したデバイスコンテキストを解放します。

hdcHDCin解放するデバイスコンテキストのハンドル。

戻り値

型: INT

hdc が解放された場合は 1 を、そうでない場合は 0 を返します。

COM エラーコードの詳細については、Error Handling in COM を参照してください。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 5 BOOL TxShowScrollBar(INT fnBar, BOOL fShow)

テキストホストウィンドウ内のスクロールバーを表示または非表示にします。

fnBarINTin

表示または非表示にするスクロールバーを指定します。このパラメーターには次のいずれかの値を指定できます。

意味
SB_BOTH ウィンドウの標準の水平スクロールバーと垂直スクロールバーを表示または非表示にします。
SB_HORZ ウィンドウの標準の水平スクロールバーを表示または非表示にします。
SB_VERT ウィンドウの標準の垂直スクロールバーを表示または非表示にします。
fShowBOOLinフラグ。TRUE の場合、fnBar で指定されたスクロールバーが表示されます。FALSE の場合、スクロールバーは非表示になります。

戻り値

型: BOOL

メソッドが成功した場合は TRUE を返します。

メソッドが失敗した場合は FALSE を返します。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 6 BOOL TxEnableScrollBar(SCROLLBAR_CONSTANTS fuSBFlags, INT fuArrowflags)

テキストホストウィンドウ内の一方または両方のスクロールバーの矢印を有効または無効にします。

fuSBFlagsSCROLLBAR_CONSTANTSin

影響を受けるスクロールバーを指定します。このパラメーターには次のいずれかの値を指定できます。

意味
SB_BOTH
水平スクロールバーと垂直スクロールバーの両方に影響します。
SB_HORZ
水平スクロールバーに影響します。
SB_VERT
垂直スクロールバーに影響します。
fuArrowflagsINTin

有効または無効にするスクロールバーの矢印を指定します。このパラメーターには次のいずれかの値を指定できます。

意味
ESB_DISABLE_BOTH
スクロールバーの両方の矢印を無効にします。
ESB_DISABLE_DOWN
垂直スクロールバーの下矢印を無効にします。
ESB_DISABLE_LEFT
水平スクロールバーの左矢印を無効にします。
ESB_DISABLE_LTUP
水平スクロールバーの左矢印、または垂直スクロールバーの上矢印を無効にします。
ESB_DISABLE_RIGHT
水平スクロールバーの右矢印を無効にします。
ESB_DISABLE_RTDN
水平スクロールバーの右矢印、または垂直スクロールバーの下矢印を無効にします。
ESB_DISABLE_UP
垂直スクロールバーの上矢印を無効にします。
ESB_ENABLE_BOTH
スクロールバーの両方の矢印を有効にします。

戻り値

型: BOOL

矢印が指定どおりに有効または無効にされた場合は 0 以外の値を返します。

矢印が既に要求された状態にあるか、エラーが発生した場合は 0 を返します。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 7 BOOL TxSetScrollRange(INT fnBar, INT nMinPos, INT nMaxPos, BOOL fRedraw)

テキストホストウィンドウ内の指定したスクロールバーの最小位置と最大位置の値を設定します。

fnBarINTinスクロールバーフラグ。SB_HORZ の場合は水平スクロールが行われます。既定では垂直スクロールが行われます。
nMinPosINTin最小スクロール位置。
nMaxPosINTin最大スクロール位置。
fRedrawBOOLin再描画フラグ。TRUE の場合、変更を反映するためにスクロールバーが再描画されます。FALSE の場合、スクロールバーは再描画されません。

戻り値

型: BOOL

矢印が指定どおりに有効または無効にされた場合は TRUE を返します。

矢印が既に要求された状態にあるか、エラーが発生した場合は FALSE を返します。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 8 BOOL TxSetScrollPos(INT fnBar, INT nPos, BOOL fRedraw)

指定したスクロールバー内のスクロールボックス(つまみ)の位置を設定し、要求された場合は、スクロールボックスの新しい位置を反映するようにスクロールバーを再描画します。(ITextHost.TxSetScrollPos)

fnBarINTinスクロールバーフラグ。SB_HORZ の場合は水平スクロールが行われます。既定では垂直スクロールが行われます。
nPosINTinスクロールボックスの新しい位置。これは ITextHost::TxSetScrollRange で設定したスクロールバー値の範囲内でなければなりません。
fRedrawBOOLin再描画フラグ。TRUE の場合、スクロールボックスの新しい位置とともにスクロールバーが再描画されます。FALSE の場合、スクロールバーは再描画されません。

戻り値

型: BOOL

メソッドが成功した場合は TRUE を返します。

メソッドが失敗した場合は FALSE を返します。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 9 void TxInvalidateRect(RECT* prc, BOOL fMode)

テキストホストがテキストホストウィンドウの更新領域に追加する四角形を指定します。

prcRECT*inout無効な四角形。
fModeBOOLin更新領域が処理されるときに、更新領域内の背景を消去するかどうかを指定します。このパラメーターが TRUE の場合、BeginPaint 関数が呼び出されたときに背景が消去されます。このパラメーターが FALSE の場合、背景は変更されません。

解説(Remarks)

この関数は非アクティブ時にも呼び出すことができます。ただし、ホストの実装は、要求された RECT よりも広い領域を無効化してもかまいません。

vtbl 10 void TxViewChange(BOOL fUpdate)

更新領域が変更されたことをテキストホストに通知します。

fUpdateBOOLin更新フラグ。TRUE の場合、テキストホストは UpdateWindow を呼び出します。それ以外の場合は何も行いません。「解説」セクションを参照してください。

解説(Remarks)

テキストサービスオブジェクトは、コントロールが非アクティブであっても、視覚的な表現が変化するたびに TxViewChange を呼び出す必要があります。コントロールがアクティブな場合、テキストサービスはコントロールのウィンドウが確実に更新されるようにする必要もあります。これは、いくつかの方法で行えます。

テキストサービスオブジェクトがアクティブなビューを更新した後、TxViewChange を呼び出し、その呼び出しとともに fUpdateTRUE を設定できます。TRUE を渡すことで、テキストホストは UpdateWindow を呼び出し、アクティブなコントロールの未描画領域が確実に再描画されるようにします。
vtbl 11 BOOL TxCreateCaret(HBITMAP hbmp, INT xWidth, INT yHeight)

ウィンドウレスリッチエディットコントロールのキャレット用に新しい形状を作成します。

hbmpHBITMAPin

新しいキャレット形状用のビットマップのハンドル。

ウィンドウレスリッチエディットコントロールに SES_LOGICALCARET スタイルが設定されている場合、hbmp は次の値の組み合わせになります。

意味
CARET_CUSTOM
装飾付きキャレット。この値は CARET_RTL も指定されている場合にのみ有効です。
CARET_ITALIC
斜体のキャレット。
CARET_NONE
点滅する垂直バー。
CARET_NULL
空のビットマップ(縮退していないテキスト選択用)。
CARET_ROTATE90
時計回りに 90 度回転したキャレット。
CARET_RTL
キャレットが右から左へ移動します。
xWidthINTinキャレットの幅(論理単位)。
yHeightINTinキャレットの高さ(論理単位)。

戻り値

型: BOOL

メソッドが成功した場合は TRUE を返します。

メソッドが失敗した場合は FALSE を返します。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 12 BOOL TxShowCaret(BOOL fShow)

テキストホストウィンドウ内のキャレット位置でキャレットを表示または非表示にします。

fShowBOOLinフラグ。TRUE の場合、キャレットが表示されます。FALSE の場合、キャレットは非表示になります。

戻り値

型: BOOL

メソッドが成功した場合は TRUE を返します。

メソッドが失敗した場合は FALSE を返します。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 13 BOOL TxSetCaretPos(INT x, INT y)

キャレット位置をテキストホストウィンドウ内の指定した座標に移動します。

xINTin水平位置(クライアント座標)。
yINTin垂直位置(クライアント座標)。

戻り値

型: BOOL

メソッドが成功した場合は TRUE を返します。

メソッドが失敗した場合は FALSE を返します。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 14 BOOL TxSetTimer(DWORD idTimer, DWORD uTimeout)

指定したタイムアウトでタイマーを作成するようテキストホストに要求します。

idTimerDWORDinタイマー識別子。
uTimeoutDWORDinタイムアウト(ミリ秒単位)。

戻り値

型: BOOL

メソッドが成功した場合は TRUE を返します。

メソッドが失敗した場合は FALSE を返します。

解説(Remarks)

idTimerITextHost::TxKillTimer で使用されます。

vtbl 15 void TxKillTimer(DWORD idTimer)

指定したタイマーを破棄するようテキストホストに要求します。

idTimerDWORDinITextHost::TxSetTimer メソッドで作成したタイマーの識別子。

解説(Remarks)

このメソッドは、コントロールがアクティブか非アクティブかにかかわらず、いつでも呼び出すことができます。

vtbl 16 void TxScrollWindowEx(INT dx, INT dy, RECT* lprcScroll, RECT* lprcClip, HRGN hrgnUpdate, RECT* lprcUpdate, SCROLL_WINDOW_FLAGS fuScroll)

指定したクライアント領域の内容をスクロールするようテキストホストに要求します。

dxINTin水平スクロールの量。
dyINTin垂直スクロールの量。
lprcScrollRECT*inoutスクロール四角形の座標。
lprcClipRECT*inoutクリップ四角形の座標。
hrgnUpdateHRGNin更新領域のハンドル。
lprcUpdateRECT*inout更新四角形の座標。
fuScrollSCROLL_WINDOW_FLAGSin

スクロールフラグ。このパラメーターには次のいずれかの値を指定できます。

意味
SW_ERASE
SW_INVALIDATE フラグとともに指定された場合、 WM_ERASEBKGND メッセージをウィンドウに送信して、新しく無効化された領域を消去します。
SW_INVALIDATE
スクロール後、 hrgnUpdate パラメーターで指定された領域を無効化します。
SW_SCROLLCHILDREN
lprcScroll パラメーターが指す四角形と交差するすべての子ウィンドウをスクロールします。子ウィンドウは dx および dy パラメーターで指定されたピクセル数だけスクロールされます。システムは、 lprcScroll の四角形と交差するすべての子ウィンドウに、たとえ移動しなくても WM_MOVE メッセージを送信します。
SW_SMOOTHSCROLL
スムーススクロールを使用してスクロールします。 fuScroll パラメーターの HIWORD 部分を使用して、スムーススクロール操作にかける時間を指定します。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 17 void TxSetCapture(BOOL fCapture)

テキストホストのウィンドウでマウスキャプチャを設定します。

fCaptureBOOLinマウスキャプチャを設定するか解放するかを示します。TRUE の場合、マウスキャプチャが設定されます。FALSE の場合、マウスキャプチャが解放されます。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出しても、何も行われないことがあります。

vtbl 18 void TxSetFocus()

テキストホストウィンドウにフォーカスを設定します。

解説(Remarks)

このメソッドはコントロールがインプレースアクティブなときにのみ有効です。コントロールが非アクティブなときに呼び出すと失敗することがあります。

vtbl 19 void TxSetCursor(HCURSOR hcur, BOOL fText)

テキストホストのウィンドウに新しいカーソル形状(I ビーム)を設定します。

hcurHCURSORinカーソルのハンドル。
fTextBOOLinTRUE の場合、呼び出し元がテキストカーソルを設定しようとしていることを示します。詳細については「解説」セクションを参照してください。

解説(Remarks)

このメソッドは、コントロールがアクティブか非アクティブかにかかわらず、いつでも呼び出すことができます。

マウスカーソルを設定するには、テキストサービスオブジェクトが TxSetCursor を呼び出します。fText パラメーターが TRUE の場合、テキストサービスオブジェクトはテキストカーソル(選択されていないテキストの上にあるときに I ビームとして表示されるカーソル)を設定しようとしています。この場合、ホストはコントロールの MousePointer プロパティに応じた任意のカーソルを設定できます。これは Microsoft Visual Basic との互換性のために必要です。Visual Basic のプログラマーは、MousePointer プロパティを通じてマウスカーソルの形状を制御できるためです。

vtbl 20 BOOL TxScreenToClient(POINT* lppt)

スクリーン座標をテキストホストウィンドウの座標に変換します。

lpptPOINT*inout変換するスクリーン座標。

戻り値

型: BOOL

呼び出しが成功した場合は TRUE を返します。

呼び出しが失敗した場合は FALSE を返します。

vtbl 21 BOOL TxClientToScreen(POINT* lppt)

テキストホスト座標をスクリーン座標に変換します。

lpptPOINT*inout変換するクライアント座標。

戻り値

型: BOOL

メソッドが成功した場合は TRUE を返します。

メソッドが失敗した場合は FALSE を返します。

解説(Remarks)

この呼び出しはいつでも有効ですが、失敗することもあります。一般に、テキストサービスオブジェクトがクライアント座標から変換する必要がある場合(たとえば TOM の GetPoint メソッドの場合)、テキストサービスオブジェクトは表示されています。

ただし、変換が不可能な場合、このメソッドは失敗します。

vtbl 22 HRESULT TxActivate(INT* plOldState)

コントロールがアクティブであることをテキストホストに通知します。

plOldStateINT*inout以前のアクティブ化状態。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は、次の COM エラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値 説明
E_FAIL
現在アクティブ化できません。

解説(Remarks)

ホストがアクティブ化要求を拒否することは正当です。たとえば、コントロールが最小化されていて見えない場合などです。

呼び出し元は、アクティブ化の失敗を適切に処理できる必要があります。

このメソッドが何回呼び出されても、コントロールを非アクティブ化するために必要な ITextHost::TxDeactivate の呼び出しは 1 回だけです。

この関数は plOldState に不透明なハンドルを返します。呼び出し元(テキストサービスオブジェクト)はこのハンドルを保存し、後続の ITextHost::TxDeactivate の呼び出しで使用する必要があります。

vtbl 23 HRESULT TxDeactivate(INT lNewState)

コントロールが非アクティブになったことをテキストホストに通知します。

lNewStateINTinコントロールの新しい状態。通常は ITextHost::TxActivate が返した値です。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は、次の COM エラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値 説明
E_FAIL
原因不明のエラー。

解説(Remarks)

このメソッドが何回呼び出されても、コントロールをアクティブ化するために必要な ITextHost::TxActivate の呼び出しは 1 回だけです。

vtbl 24 HRESULT TxGetClientRect(RECT* prc)

テキストホストのクライアント領域のクライアント座標を取得します。

prcRECT*inoutテキストホストのクライアント領域のクライアント座標。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は、次の COM エラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値 説明
E_FAIL
原因不明のエラー。

解説(Remarks)

クライアント四角形は、テキストサービスオブジェクトが描画と管理を担当する四角形です。ホストは、その領域の描画をテキストサービスオブジェクトに依存します。また、テキストサービスオブジェクトはその四角形の外側の領域を描画したり無効化したりしてはなりません。

カーソルがクライアント四角形の上にあるとき、ホストはマウスメッセージをテキストサービスオブジェクトに転送します。

クライアント四角形は、含まれるウィンドウのクライアント座標で表されます。

重要 ITextHost::TxGetClientRect メソッドは、非アクティブなときに呼び出すと失敗します。
vtbl 25 HRESULT TxGetViewInset(RECT* prc)

テキストホストウィンドウ内のテキスト周囲の余白インセットの寸法を要求します。

prcRECT*inoutインセットのサイズ(クライアント座標)。 RECT 構造体の top、bottom、left、right の各メンバーは、描画を各方向にどれだけインセットするかを示します。

戻り値

型: HRESULT

戻り値は S_OK です。

解説(Remarks)

ビューインセットは、クライアント四角形とビュー四角形の間の各辺のスペースの量です。ビュー四角形(書式設定四角形とも呼ばれます)は、テキストが書式設定される四角形です。

ビューインセットは RECT 構造体で渡されますが、実際には四角形ではありません。ビュー四角形を求めるために、クライアント四角形の各辺から減算する 4 つの独立した値として扱う必要があります。

ビューインセットは HIMETRIC(各 HIMETRIC 単位は 0.01 ミリメートルに対応)で渡されるため、クライアント四角形やレンダリング用デバイスコンテキストに依存しません。

ビューインセットは、クライアント四角形のどの辺でも負の値になることがあり、その場合はビュー四角形がクライアント四角形より大きくなります。その場合、テキストはクライアント四角形にクリップされます。ビュー四角形がクライアント四角形より広い場合、ホストはコントロールに水平スクロールバーを追加することがあります。

単一行テキストサービスオブジェクトは、テキストの書式設定時にビュー四角形の右境界を無視します。

ビューインセットは、アクティブか非アクティブかにかかわらず、いつでもホストから取得できます。

vtbl 26 HRESULT TxGetCharFormat(CHARFORMATW** ppCF)

テキストホストの既定の文字書式を要求します。

ppCFCHARFORMATW**in既定の文字書式。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は、次の COM エラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値 説明
E_NOTIMPL
実装されていません。

解説(Remarks)

テキストホストは、返された CHARFORMAT の所有権を保持します。ただし、返されたポインターは、既定の文字書式が変更されたことをテキストホストが OnTxPropertyBitsChange を通じてテキストサービスオブジェクトに通知するまで、有効なままである必要があります。

vtbl 27 HRESULT TxGetParaFormat(PARAFORMAT** ppPF)

テキストホストの既定の段落書式を要求します。

ppPFPARAFORMAT**in既定の段落書式。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は、次の COM エラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値 説明
E_NOTIMPL
実装されていません。

解説(Remarks)

ホストオブジェクトは、返された PARAFORMAT 構造体の所有権を保持します。ただし、返されたポインターは、既定の段落書式が変更されたことをホストが OnTxPropertyBitsChange を通じてテキストサービスオブジェクトに通知するまで、有効なままである必要があります。

vtbl 28 COLORREF TxGetSysColor(SYS_COLOR_INDEX nIndex)

指定した表示要素に対するテキストホストの色を取得します。

nIndexSYS_COLOR_INDEXin色を取得する表示要素。このパラメーターに指定できる値の一覧については、GetSysColor 関数を参照してください。

戻り値

型: COLORREF

指定した要素の赤、緑、青(RGB)のカラー値を識別する値。

解説(Remarks)

返される色は、GetSysColor の呼び出しによって返される色とは 異なる 場合があることに注意してください。これは、ホストが既定のシステム動作をオーバーライドする場合に該当します。

注意 ホストが通常のシステム動作をオーバーライドすると、UI が一貫しなくなる(特にアクセシビリティオプションに関して)可能性があるため、注意が必要です。
vtbl 29 HRESULT TxGetBackStyle(TXTBACKSTYLE* pstyle)

テキストホストの背景スタイルを要求します。

pstyleTXTBACKSTYLE*inout

テキストホストが背景スタイルを示すために設定する変数。スタイルは TXTBACKSTYLE 列挙型の次のいずれかの値です。

意味
TXTBACK_TRANSPARENT
背景が透けて見えます。
TXTBACK_OPAQUE
背景は透けて見えません。

戻り値

型: HRESULT

戻り値は S_OK です。

vtbl 30 HRESULT TxGetMaxLength(DWORD* plength)

テキストホストが許可するテキストの最大長を取得します。

plengthDWORD*inout許可される最大テキスト長(文字数)。INFINITE が返された場合、テキストサービスオブジェクトは、指定された任意のテキストを格納するために必要なだけメモリを使用できます。

戻り値

型: HRESULT

戻り値は S_OK です。

解説(Remarks)

この最大値に達すると、テキストサービスオブジェクトはそれ以上の文字挿入と貼り付けテキストを拒否する必要があります。 ただし TxSetText は、最大長より長いテキストも受け入れて(設定して)ください。これは、このメソッドがバインディングに使用され、コントロールがバインドされているデータの整合性を維持するために重要だからです。

このメソッドは EM_LIMITTEXT メッセージに対応します。

返される制限が、テキストサービスオブジェクト内に現在ある文字数より少ない場合でも、データが失われることはありません。代わりに、テキストが制限を下回るまで、削除 以外 のテキスト編集は許可されません。

vtbl 31 HRESULT TxGetScrollBars(DWORD* pdwScrollBar)

テキストホストがサポートするスクロールバーに関する情報を要求します。

pdwScrollBarDWORD*inout

スクロールバー。このパラメーターには、スクロールバーに関連する次のウィンドウスタイルの組み合わせを指定できます。

意味
WS_VSCROLL
垂直スクロールバーをサポートします。
WS_HSCROLL
水平スクロールバーをサポートします。
ES_AUTOVSCROLL
ユーザーが最終行で ENTER キーを押すと、テキストを 1 ページ分自動的に上へスクロールします。
ES_AUTOHSCROLL
ユーザーが行末で文字を入力すると、テキストを右へ 10 文字分自動的にスクロールします。ユーザーが ENTER キーを押すと、コントロールはすべてのテキストを位置 0 まで戻します。
ES_DISABLENOSCROLL
スクロールバーが不要なときに、非表示にする代わりに無効化します。

戻り値

型: HRESULT

戻り値は S_OK です。

vtbl 32 HRESULT TxGetPasswordChar(CHAR* pch)

テキストホストのパスワード文字を要求します。

pchCHAR*outパスワード文字。

戻り値

型: HRESULT

パスワード文字が有効な場合は S_OK を返します。

パスワード文字が有効でない場合は S_FALSE を返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

解説(Remarks)

パスワード文字は、テキストサービスオブジェクトで TXTBIT_USEPASSWORD ビットが有効になっている場合にのみ表示されます。パスワード文字が変更された場合は、OnTxPropertyBitsChange を通じて TXTBIT_USEPASSWORD ビットを再度有効にしてください。

vtbl 33 HRESULT TxGetAcceleratorPos(INT* pcp)

アクセラレーター文字の下線表示に使用する特殊文字を要求します。

pcpINT*inout下線を引く文字の文字位置。この変数はテキストホストによって設定されます。文字位置が –1(つまりマイナス 1)の場合、どの文字にも下線を引かないことを示します。

戻り値

型: HRESULT

戻り値は S_OK です。

解説(Remarks)

アクセラレーターは、さまざまな UI 要素(ボタンなど)へのキーボードショートカット(アクセラレーターキー)を可能にします。通常、ショートカット文字には下線が引かれます。

このメソッドは、どの文字がアクセラレーターであり、したがって下線を引くべきかをテキストサービスオブジェクトに伝えます。テキストサービスオブジェクトはアクセラレーターを 処理しない ことに注意してください。それはホストの責任です。

このメソッドは通常、テキストサービスオブジェクトで TXTBIT_SHOWACCELERATOR ビットが設定されている場合にのみ呼び出されます。OnTxPropertyBitsChange を参照してください。

注意 テキストサービスオブジェクト内のテキストに 何らかの 変更が加えられると、アクセラレーターの下線が無効化されます。この場合、適切な文字位置を再計算し、新しいアクセラレーターが利用可能になったことをテキストサービスオブジェクトに通知するのはホストの責任です。
vtbl 34 HRESULT TxGetExtent(SIZE* lpExtent)

コントロールのネイティブサイズを HIMETRIC で要求します。

lpExtentSIZE*inoutコントロールのサイズ(HIMETRIC 単位。つまり単位は 0.01 ミリメートル)。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は、次の COM エラーコードを返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

戻り値 説明
E_NOTIMPL
実装されていません。

解説(Remarks)

このメソッドは、ズームを実装するためにテキストサービスオブジェクトによって使用されます。テキストサービスオブジェクトは、クライアント四角形の HIMETRIC 単位のサイズとデバイスピクセル単位のサイズの比率からズーム倍率を導出します。各 HIMETRIC 単位は 0.01 ミリメートルに対応します。

[垂直ズーム倍率] = [クライアント四角形のピクセル高さ] * 2540 / [HIMETRIC 垂直サイズ] * [垂直インチあたりのピクセル数(デバイスコンテキストから)]

垂直方向と水平方向のズーム倍率が同じでない場合、テキストサービスオブジェクトは水平方向のズーム倍率を無視し、垂直方向と同じであると仮定できます。

vtbl 35 HRESULT OnTxCharFormatChange(CHARFORMATW* pCF)

テキストホストの既定の文字書式を設定します。

pCFCHARFORMATW*in新しい既定の文字書式。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。

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

戻り値 説明
E_INVALIDARG
1 つ以上の引数が無効です。
E_FAIL
原因不明のエラー。
vtbl 36 HRESULT OnTxParaFormatChange(PARAFORMAT* pPF)

テキストホストの既定の段落書式を設定します。

pPFPARAFORMAT*in新しい既定の段落書式。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。

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

戻り値 説明
E_INVALIDARG
1 つ以上の引数が無効です。
E_FAIL
原因不明のエラー。
vtbl 37 HRESULT TxGetPropertyBits(DWORD dwMask, DWORD* pdwBits)

テキストホストのビットプロパティ設定を要求します。

dwMaskDWORDin呼び出し元が関心を持つプロパティのマスク。指定可能なビット値については、 OnTxPropertyBitsChangedwBits を参照してください。
pdwBitsDWORD*inout
                <i>dwMask</i> で指定されたプロパティの現在の設定。

戻り値

型: HRESULT

戻り値は S_OK です。

解説(Remarks)

この呼び出しは、要求されるプロパティビットのどのような組み合わせに対しても、いつでも有効です。

vtbl 38 HRESULT TxNotify(DWORD iNotify, void* pv)

さまざまなイベントをテキストホストに通知します。

iNotifyDWORDinホストに通知するイベント。 EN_ 通知コードのいずれか。
pvvoid*inout
                <i>iNotify</i> に依存する追加データ。

戻り値

型: HRESULT

メソッドが成功した場合は S_OK を返します。

メソッドが失敗した場合は S_FALSE を返します。COM エラーコードの詳細については、Error Handling in COM を参照してください。

解説(Remarks)

イベントには基本的に 2 つのカテゴリ、 直接遅延 があることに注意してください。直接イベントは、何らかの処理が必要なため即座に送信されます。たとえば EN_PROTECTED です。遅延イベントは、すべての処理が完了した後に送信されます。したがってコントロールは安定した状態にあります。遅延通知の例としては、EN_CHANGEEN_ERRSPACEEN_SELCHANGE があります。

通知イベントは、リッチエディットウィンドウの親ウィンドウに送信される通知コードと同じです。イベントの発生は、EM_SETEVENTMASK メッセージで設定するマスクによって制御できます。

一般に、このメソッドの処理中にテキストサービスオブジェクトを呼び出すことは正当ですが、実装者は過度の再帰を避けるよう注意してください。

以下は、送信される可能性のある通知の一覧です。

通知 意味
EN_CHANGE ユーザーがコントロール内のテキストを変更した可能性のある操作を行ったときに、システムが画面を更新した後に送信されます。
EN_DROPFILES WM_DROPFILES メッセージ、または IDropTarget::DragEnter 通知のいずれかを受信したときに送信されます。
EN_ERRSPACE コントロールが指定された要求を満たすのに十分なメモリを割り当てられないときに送信されます。
EN_HSCROLL 画面が更新される前に、ユーザーがコントロールの水平スクロールバーをクリックしたときに送信されます。
EN_KILLFOCUS コントロールがキーボードフォーカスを失ったときに送信されます。
EN_LINK マウスポインターが CFE_LINK 効果を持つテキストの上にあるときに、リッチエディットコントロールがマウスクリックメッセージなどのさまざまなメッセージを受信したときに送信されます。
EN_MAXTEXT 現在のテキスト挿入がコントロールの最大文字数を超えたときに送信されます。
EN_OLEOPFAILED OLE オブジェクトに対するユーザー操作が失敗したときに送信されます。
EN_PROTECTED ユーザーが保護されたテキスト範囲を変更する操作を行ったときに送信されます。
EN_REQUESTRESIZE リッチエディットコントロールの内容がコントロールのウィンドウサイズと異なるときに送信されます。
EN_SAVECLIPBOARD エディットコントロールが破棄されるときに送信されます。テキストホストは、OleFlushClipboard を呼び出すべきかどうかを示す必要があります。フラッシュする文字数とオブジェクト数を示すデータは、 ENSAVECLIPBOARD データ構造体で送信されます。マスク値はありません。
EN_SELCHANGE 現在の選択範囲が変更されたときに送信されます。SELCHANGE データ構造体も送信され、新しい選択範囲と、その選択範囲が現在対象としているデータの種類を示します。ENM_SELCHANGE マスクによって制御されます。
EN_SETFOCUS エディットコントロールがキーボードフォーカスを受け取ったときに送信されます。追加データは送信されず、マスクもありません。
EN_STOPNOUNDO 元に戻す(undo)状態を維持するのに十分なメモリをコントロールが割り当てられない操作が発生したときに送信されます。S_FALSE が返された場合、操作は停止されます。それ以外の場合、操作は続行されます。
EN_UPDATE エディットコントロールが変更されたデータまたはテキストの再描画を要求する前に送信されます。追加データは送信されません。このイベントは ENM_UPDATE マスクによって制御されます。 Rich Edit 2.0 以降: ENM_UPDATE マスクは無視され、EN_UPDATE 通知コードが常に送信されます。ただし、Microsoft Rich Edit 3.0 が Microsoft Rich Edit 1.0 をエミュレートする場合、ENM_UPDATE マスクがこの通知を制御します。
EN_VSCROLL 画面が更新される前に、ユーザーがエディットコントロールの垂直スクロールバーをクリックしたとき、またはエディットコントロール上でマウスホイールをスクロールしたときに送信されます。これは ENM_SCROLL マスクによって制御されます。追加データは送信されません。
注意 EN_MSGFILTERTxNotify に送信されません。ウィンドウメッセージをフィルターするには、TxSendMessage を使用してください。
vtbl 39 HIMC TxImmGetContext()

テキストサービスホストに関連付けられた Input Method Editor (IME) 入力コンテキストを取得します。このメソッドは、オペレーティングシステムのアジア言語版でのみ使用されます。

戻り値

型: HIMC

入力コンテキストのハンドル。

vtbl 40 void TxImmReleaseContext(HIMC himc)

ITextHost::TxImmGetContext メソッドが返した入力コンテキストを解放し、そのコンテキストに関連付けられたメモリのロックを解除します。このメソッドは、オペレーティングシステムのアジア言語版でのみ使用されます。

himcHIMCin入力コンテキスト。
vtbl 41 HRESULT TxGetSelectionBarWidth(INT* lSelBarWidth)

選択バーのサイズを HIMETRIC で返します。

lSelBarWidthINT*inout選択バーの幅(HIMETRIC 単位。つまり単位は 0.01 ミリメートル)。

戻り値

型: HRESULT

戻り値は S_OK です。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ITextHost "{}"
#usecom global ITextHost IID_ITextHost "{}"
#comfunc global ITextHost_TxGetDC                 3
#comfunc global ITextHost_TxReleaseDC             4 sptr
#comfunc global ITextHost_TxShowScrollBar         5 int,int
#comfunc global ITextHost_TxEnableScrollBar       6 int,int
#comfunc global ITextHost_TxSetScrollRange        7 int,int,int,int
#comfunc global ITextHost_TxSetScrollPos          8 int,int,int
#comfunc global ITextHost_TxInvalidateRect        9 var,int
#comfunc global ITextHost_TxViewChange            10 int
#comfunc global ITextHost_TxCreateCaret           11 sptr,int,int
#comfunc global ITextHost_TxShowCaret             12 int
#comfunc global ITextHost_TxSetCaretPos           13 int,int
#comfunc global ITextHost_TxSetTimer              14 int,int
#comfunc global ITextHost_TxKillTimer             15 int
#comfunc global ITextHost_TxScrollWindowEx        16 int,int,var,var,sptr,var,int
#comfunc global ITextHost_TxSetCapture            17 int
#comfunc global ITextHost_TxSetFocus              18
#comfunc global ITextHost_TxSetCursor             19 sptr,int
#comfunc global ITextHost_TxScreenToClient        20 var
#comfunc global ITextHost_TxClientToScreen        21 var
#comfunc global ITextHost_TxActivate              22 var
#comfunc global ITextHost_TxDeactivate            23 int
#comfunc global ITextHost_TxGetClientRect         24 var
#comfunc global ITextHost_TxGetViewInset          25 var
#comfunc global ITextHost_TxGetCharFormat         26 var
#comfunc global ITextHost_TxGetParaFormat         27 var
#comfunc global ITextHost_TxGetSysColor           28 int
#comfunc global ITextHost_TxGetBackStyle          29 var
#comfunc global ITextHost_TxGetMaxLength          30 var
#comfunc global ITextHost_TxGetScrollBars         31 var
#comfunc global ITextHost_TxGetPasswordChar       32 var
#comfunc global ITextHost_TxGetAcceleratorPos     33 var
#comfunc global ITextHost_TxGetExtent             34 var
#comfunc global ITextHost_OnTxCharFormatChange    35 var
#comfunc global ITextHost_OnTxParaFormatChange    36 var
#comfunc global ITextHost_TxGetPropertyBits       37 int,var
#comfunc global ITextHost_TxNotify                38 int,sptr
#comfunc global ITextHost_TxImmGetContext         39
#comfunc global ITextHost_TxImmReleaseContext     40 sptr
#comfunc global ITextHost_TxGetSelectionBarWidth  41 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。