ITextServices::TxDraw メソッド (textserv.h)
テキスト サービス オブジェクトを描画します。
構文
HRESULT TxDraw(
[in] DWORD dwDrawAspect,
LONG lindex,
[in] void *pvAspect,
[in] DVTARGETDEVICE *ptd,
[in] HDC hdcDraw,
[in] HDC hicTargetDev,
[in] LPCRECTL lprcBounds,
[in] LPCRECTL lprcWBounds,
[in] LPRECT lprcUpdate,
BOOL(* )(DWORD) pfnContinue,
DWORD dwContinue,
LONG lViewId
);
パラメーター
[in] dwDrawAspect
型: DWORD
描画するアスペクト、つまり、オブジェクトがどのように表示されるかを指定します。 描画の縦横比には、次のいずれかの値を指定できます。
lindex
型: LONG
サポートされていません。
[in] pvAspect
型: void*
描画の最適化に関する情報。
[in] ptd
種類: DVTARGETDEVICE*
ターゲット デバイス。
[in] hdcDraw
種類: HDC
デバイス コンテキストのレンダリング。
[in] hicTargetDev
種類: HDC
ターゲット情報コンテキスト。
[in] lprcBounds
型: LPCRECTL
境界 (クライアント) の四角形。
[in] lprcWBounds
型: LPCRECTL
メタファイルのクリッピング四角形。
[in] lprcUpdate
種類: LPRECT
lprcBounds 内の更新リージョン。
pfnContinue
種類: BOOL コールバック*
サポートされていません。
dwContinue
型: DWORD
continue 関数に渡すパラメーター。
lViewId
型: LONG
描画するビューを指定します。
値 | 説明 |
---|---|
|
インプレース アクティブ ビューを描画します。 |
|
インプレース アクティブ ビュー以外のビューを描画します。たとえば、印刷プレビューなどです。 |
戻り値
型: HRESULT
通常、戻り値は S_OK。
解説
このメソッドは、テキスト サービス オブジェクトをレンダリングします。 OLE の対応する IViewObject::D raw メソッドと同じパラメーターを受け取り、追加の lprcUpdate パラメーターと lViewId パラメーターを指定します。 ホストがインプレース アクティブまたは非アクティブな間に使用できます。
lprcBounds パラメーターは、レンダリングする四角形 (クライアントの四角形とも呼ばれます) を提供します。 この四角形は、描画するテキスト サービス オブジェクトのイメージ全体の位置と範囲を表します。 hdcDraw の論理座標系で表されます。 lprcBounds が NULL の場合、コントロールはアクティブである必要があります。 この場合、テキスト サービス オブジェクトは、インプレース アクティブ ビュー (つまり、ホストで TxGetClientRect を呼び出すことによって取得できるクライアント四角形) をレンダリングする必要があります。
lprcUpdate パラメーターが NULL でない場合、hdcDraw の論理座標系でそのクライアント四角形内で更新する四角形が提供されます。 lprcUpdate が NULL の場合は、クライアントの四角形全体を塗りつぶす必要があります。
テキスト サービス オブジェクトは、クライアントの四角形と TxGetExtent によって指定されたネイティブ サイズから取得できる、適切なズーム係数を使用してレンダリングする必要があります。 ズーム係数の詳細については、「 TxGetExtent」を参照してください。
OLE ホストと ITextServices::TxDraw に関する一般的なコメント ( ITextServices::OnTxSetCursor、 および ITextServices::TxQueryHitPoint についても)。
OLE ホストは、任意のレンダリング デバイス コンテキストまたはクライアント四角形を使用して、いつでも ITextServices::TxDraw メソッドを呼び出すことができます。 非アクティブな OLE オブジェクトは、エクステントのみを保持します。 レンダリングする四角形を取得するために、ホストは IViewObject::D raw メソッドを 呼び出します。 この四角形は、そのメソッドのスコープに対してのみ有効です。 したがって、同じコントロールは、異なる四角形と異なるデバイス コンテキストで連続してレンダリングできます。たとえば、画面上の異なるビューに同時に表示されるためです。
通常、 ITextServices::TxDraw に渡されるクライアントの四角形とデバイス コンテキストはキャッシュしないでください。これは、テキスト サービス オブジェクトが描画ごとに強制的に行を再計算するため、パフォーマンスを低下させます。 代わりに、テキスト サービス オブジェクトは、特定のクライアントの四角形とデバイス コンテキスト (改行など) に対して計算される情報をキャッシュできます。 ただし、 ITextServices::TxDraw の次回の呼び出しでは、キャッシュされた情報が使用される前に有効性を確認し、必要に応じて更新された情報を再生成する必要があります。
また、コントロールがインプレース アクティブな場合は、細心の注意を払います。 ITextServices::TxDraw を呼び出して、インプレース アクティブなビュー以外のビューをレンダリングできるため、この問題はさらに複雑になります。 つまり、 ITextServices::TxDraw に渡されるクライアントの四角形は、アクティブな四角形と同じではない可能性があります ( ITextServices::OnTxInPlaceActivate に 渡され、ホスト上の TxGetClientRect を介して取得されます)。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | textserv.h |
[DLL] | Msftedit.dll |
関連項目
概念
その他のリソース
リファレンス