Share via


ITextServices2::TxGetNaturalSize2 メソッド (textserv.h)

コンテンツが適切に収まるようにコントロールのサイズを変更します。 このメソッドは TxGetNaturalSize に似ていますが、テキストの先頭行の上昇も取得します。

構文

HRESULT TxGetNaturalSize2(
  DWORD          dwAspect,
  HDC            hdcDraw,
  HDC            hicTargetDev,
  DVTARGETDEVICE *ptd,
  DWORD          dwMode,
  const SIZEL    *psizelExtent,
  LONG           *pwidth,
  LONG           *pheight,
  LONG           *pascent
);

パラメーター

dwAspect

型: DWORD

図面の側面。 DVASPECT 列挙の値のいずれかを指定できます。

hdcDraw

種類: HDC

描画が行われるデバイス コンテキスト。

hicTargetDev

種類: HDC

テキストを書式設定するデバイス コンテキスト (WYSIWYG の場合)。

ptd

種類: DVTARGETDEVICE*

ターゲット デバイスの詳細。

dwMode

型: DWORD

要求された継手の種類。 次のいずれかになります。

説明
TXTNS_EMU
このメソッドのパラメーターの測定単位 (両方の方法) として、ピクセルではなく英語のメートル法単位 (EMU) を使用します。
TXTNS_FITTOCONTENT
渡された幅にテキストを書式設定して、テキスト全体に合わせてコントロールのサイズを変更します。 text services オブジェクトは、テキスト全体の高さと最も広い行の幅を返します。

たとえば、ユーザーがコントロールのハンドルの 1 つをダブルクリックすると、これを行う必要があります。

TXTNS_FITTOCONTENT2
インデントされたコンテンツに合わせてコントロールのサイズを変更します。
TXTNS_FITTOCONTENT3
コントロールのサイズを変更して、インデントされたコンテンツと末尾の空白に収まるようにします。
TXTNS_FITTOCONTENTWSP
コントロールのサイズを変更して、意図しないコンテンツと末尾の空白に収まるようにします。
TXTNS_INCLUDELASTLINE
プレーンテキスト コントロールの場合は、サイズを計算するときに、最終的な復帰の高さを含めます。
TXTNS_ROUNDTOLINE
コントロールのサイズを変更して、整数の行数を表示します (行はクリップされません)。 渡された幅と高さを埋めるのに十分なテキストを書式設定し、最も近い線の境界に丸められた高さを返します。
メモ 渡され、返される幅と高さは、ビューの四角形に対応します。 ホストは、必要に応じてクライアントの四角形に戻る必要があります。 これらの値はテキスト オブジェクトの範囲を表しているため、HIMETRIC 座標 (各 HIMETRIC 単位は 0.01 mm) で入力および出力され、測定にはズーム係数は含まれません。 ズーム係数の詳細については、「 TxGetExtent」を参照してください。
 

psizelExtent

型: const SIZEL*

ズームに使用するエクステントのサイズ (HIMETRIC 単位)。

pwidth

型: LONG*

dwMode によって定義される継手の幅。

pheight

型: LONG*

dwMode によって定義される継手の高さ。

pascent

型: LONG*

1 行のコントロールの場合、 は、テキストの一番上の行にある文字のアセント (ベースラインより上の単位) を受け取ります。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は S_OK

テキスト サービスでオブジェクトをアクティブにできなかった場合、戻り値は次のいずれかの HRESULT コードになります。 COM エラー コードの詳細については、「COM でのエラー処理」を参照してください。

リターン コード 説明
E_FAIL
正しいサイズを特定できません。
E_INVALIDARG
1 つ以上の引数が無効です。
E_OUTOFMEMORY
メモリ不足です。

解説

最初の 4 つのパラメーターは 、ITextServices::TxDraw の同等のパラメーターに似ていて、同じ情報を提供します。 行を再計算する必要がある場合、 TxGetNaturalSize2ITextServices::TxDraw と同じ方法でこれらの値を使用します。

pwidth パラメーターと pheight パラメーターは in/out パラメーターです。 ホストは、テキスト オブジェクトの自然な範囲の仮の幅と高さを渡します。 テキスト サービス オブジェクトは、これらの値を現在のキャッシュ状態と比較し、異なる場合は行を再計算します。 次に、 dwMode で指定された自然なサイズを計算して返します。

次の例では、 の psizelExtent パラメーターを 1:1 のズーム係数に初期化する方法を示します。 省略記号は、指定する必要があるコードを示します。


LONG dxpi = GetDeviceCaps(hdc, LOGPIXELSX);
LONG dypi = GetDeviceCaps(hdc, LOGPIXELSY);
LONG dyAscent = 0;
LONG dx = ... ;  // Text image width, in pixels 
LONG dy = ... ;  // Text image height, in pixels 
SIZEL sizel;     // dx and dy, in HIMETRIC

ITextServices2 *pserv = ... ; // Interface for single-line control

sizel.cx = MulDiv(dx, HIMETRIC_PER_INCH, dxpi); 
sizel.cy = MulDiv(dy, HIMETRIC_PER_INCH, dypi);

pserv->TxGetNaturalSize2(DVASPECT_DOCPRINT, hdc, hdcNil, pNil,
    TXTNS_FITTOCONTENT, &sizel, &dx, &dy, &dyAscent))) 

要件

   
サポートされている最小のクライアント Windows 8 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2012 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー textserv.h
[DLL] Msftedit.dll

関連項目

ITextServices2