共用方式為


GetTextExtentPoint32A 函式 (wingdi.h)

GetTextExtentPoint32 函式會計算指定之文字字串的寬度和高度。

語法

BOOL GetTextExtentPoint32A(
  [in]  HDC    hdc,
  [in]  LPCSTR lpString,
  [in]  int    c,
  [out] LPSIZE psizl
);

參數

[in] hdc

裝置內容的句柄。

[in] lpString

指定文字字串之緩衝區的指標。 字串不需要以 null 結尾,因為 c 參數會指定字串的長度。

[in] c

lpString所指向之字串 的 長度。

[out] psizl

SIZE 結構的指標,這個結構會以邏輯單位接收字串的維度。

傳回值

如果函式成功,則傳回值為非零值。

如果函式失敗,傳回值為零。

言論

GetTextExtentPoint32 函式會使用目前選取的字型來計算字串的維度。 以邏輯單位計算寬度和高度,而不考慮任何裁剪。

由於某些裝置 kern 字元,字串中字元的範圍總和可能不等於字串的範圍。

計算的字串寬度會考慮 setTextCharacterExtra SetTextCharacterExtra 函式所設定的字元間距,以及 setTextJustification所設定的理由。 這適用於在螢幕上和列印的顯示。 不過,如果在 ExtTextOut中設定了 lpDxGetTextExtentPoint32 不會考慮字元間距或理由。 此外,針對EMF,列印結果一律會將字元間距和理由納入考慮。

處理螢幕上顯示的文字時,計算字串寬度會考慮由 setTextCharacterExtra 函式所設定的 字元間距,以及 setTextJustification 所設定的對齊。 不過,如果在 ExtTextOut中設定了 lpDxGetTextExtentPoint32 不會考慮字元間距或理由。 不過,使用 EMF 列印時:

  • 列印結果會忽略字元間距,不過 GetTextExtentPoint32 將其納入考慮。
  • 列印結果會考慮理由,不過 GetTextExtentPoint32 忽略它。
當此函式傳回文字範圍時,它會假設文字為水準,也就是逸出器一律為 0。 這適用於文字的水準和垂直測量。 即使您使用指定非零逸出項的字型,此函式也不會在計算文字範圍時使用角度。 應用程式必須明確轉換。 不過,當圖形模式設定為 GM_ADVANCED 字元方向與列印方向為90度時,此函式傳回的值不會遵循此規則。 當指定字串的字元方向和列印方向相符時,此函式會以 { cx : 116, cy : 18 } 的形式傳回 SIZE 結構中的字元串維度。 當相同字串的字元方向和列印方向相距 90 度時,此函式會以 { cx : 18, cy : 116 } 的形式傳回 SIZE 結構中的字元串維度。

GetTextExtentPoint32 在計算文字字串高度時,不會考慮 “\n” 或 “\r\n” (歸位字元和新行) 字元。

例子

如需範例,請參閱在相同行從不同字型繪製文字。

注意

wingdi.h 標頭會將 GetTextExtentPoint32 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 wingdi.h (包括 Windows.h)
連結庫 Gdi32.lib
DLL Gdi32.dll

另請參閱

ExtTextOut

字型和文字函式

字型和文字概觀

SIZE

SetTextCharacterExtra

SetTextJustification