GetTextExtentExPointA 函式 (wingdi.h)
GetTextExtentExPoint 函式會擷取指定字串中符合指定空格的字元數,並以每個字元的文字範圍填滿數位。 (文字範圍是空格開頭與將放入空格的字元之間的距離。這項資訊適用於自動換行計算。
語法
BOOL GetTextExtentExPointA(
[in] HDC hdc,
[in] LPCSTR lpszString,
[in] int cchString,
[in] int nMaxExtent,
[out] LPINT lpnFit,
[out] LPINT lpnDx,
[out] LPSIZE lpSize
);
參數
[in] hdc
裝置內容的句柄。
[in] lpszString
要擷取範圍之 Null 終止字串的指標。
[in] cchString
lpszStr 參數所指向字串中的字元數。 若為 ANSI 呼叫,它會以位元組為單位指定字串長度,而 Unicode 則指定 WORD 中的字串長度。 請注意,針對 ANSI 函式,SBCS 代碼頁中的字元會各接受一個字節,而 DBCS 代碼頁中的大多數字元則採用兩個字節:針對 Unicode 函式,目前定義的 Unicode 字元(基本多語平面 (BMP) 中的字元是一個 WORD,而 Unicode 代理則是兩個 WORD。
[in] nMaxExtent
格式化字串的最大允許寬度,以邏輯單位表示。
[out] lpnFit
整數的指標,可接收最大字元數的計數,該數目將符合 nMaxExtent 參數所指定之空格。 當
[out] lpnDx
接收部分字串範圍之整數數位的指標。 陣列中的每個元素都會提供字串開頭與 nMaxExtent 參數所指定空間中的其中一個字元之間的距離。 此陣列必須至少有 cchString 參數所指定的元素數目,因為整個陣列是在內部使用。 函式會以 lpnFit 參數所指定之字元數的有效範圍填滿陣列。 應忽略數位其餘部分的任何值。 如果 alpDxNULL,則函式不會計算部分字串寬度。
對於複雜腳本,其中字元序列可能以任意數目字元表示,alpDx 陣列中的值會依 lpnFit 參數所指定的數位與代碼點相符。 同樣地,您應該忽略 alpDx 陣列中的其餘值。
[out] lpSize
SIZE 結構的指標,這個結構會以邏輯單位接收字串的維度。 這個參數不能 NULL。
傳回值
如果函式成功,則傳回值為非零值。
如果函式失敗,傳回值為零。
言論
如果 lpnFit 和 alpDx 參數都 NULL,則呼叫 GetTextExtentExpoint 函式相當於呼叫 GetTextExtentPoint 函式。
針對
請注意,GetTextExtentExPoint 的 alpDx 值與 ExtTextOutlpDx 值不同。 若要在 lpDx中使用 alpDx 值,您必須先處理它們。
當此函式傳回文字範圍時,它會假設文字為水準,也就是逸出器一律為 0。 這適用於文字的水準和垂直測量。 即使您使用指定非零逸出項的字型,此函式也不會在計算文字範圍時使用角度。 應用程式必須明確轉換。 不過,當圖形模式設定為 GM_ADVANCED 字元方向與列印方向為90度時,此函式傳回的值不會遵循此規則。 當指定字串的字元方向和列印方向相符時,此函式會以 { cx : 116, cy : 18 } 的形式傳回 SIZE 結構中的字元串維度。 當相同字串的字元方向和列印方向相距 90 度時,此函式會以 { cx : 18, cy : 116 } 的形式傳回 SIZE 結構中的字元串維度。
此函式會傳回字串中每個連續字元的範圍。 當這些四捨五入為邏輯單元時,您會得到與 getCharWidth
注意
wingdi.h 標頭會根據 UNICODE 預處理器常數的定義,將 GetTextExtentExPoint 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | wingdi.h (包括 Windows.h) |
連結庫 | Gdi32.lib |
DLL | Gdi32.dll |