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 参数指定的空间中将容纳的最大字符数的计数。 当 lpnFit 参数 NULL时,将忽略 nMaxExtent 参数。

[out] lpnDx

指向接收部分字符串盘区整数数组的指针。 数组中的每个元素在字符串的开头与 nMaxExtent 参数指定的空间中的字符之一之间提供距离(以逻辑单位为单位)。 此数组必须至少具有由 cchString 参数指定的字符数,因为整个数组在内部使用。 该函数使用 lpnFit 参数指定的字符数的有效盘区填充数组。 应忽略数组其余部分的任何值。 如果 alpDxNULL,则该函数不会计算分部字符串宽度。

对于复杂脚本,其中字符序列可以由任意数量的字形表示,alpDx 数组中的值最多与 lpnFit 参数指定的数字匹配一对一与代码点匹配。 同样,应忽略 alpDx 数组中的其余值。

[out] lpSize

指向 SIZE 结构的指针,该结构接收字符串的维度(以逻辑单元为单位)。 此参数不能 NULL

返回值

如果函数成功,则返回值为非零。

如果函数失败,则返回值为零。

言论

如果 lpnFitalpDx 参数都 NULL,则调用 GetTextExtentExpoint 函数等效于调用 getTextExtentPoint 函数。

对于 GetTextExtentExPoint的 ANSI 版本,lpDx 数组的 INT 值数与 lpString中有字节数相同。 对应于 DBCS 字符的两个字节的 INT 值是整个复合字符的范围。

请注意,GetTextExtentExpointalpDx 值与 ExtTextOutlpDx 值不同。 若要在 lpDx中使用 alpDx 值,必须先处理它们。

当此函数返回文本盘区时,它假定文本为水平,即转义始终为 0。 这适用于文本的水平和垂直度量。 即使使用指定非零转义符的字体,此函数也不会在计算文本区时使用角度。 应用必须显式转换它。 但是,当图形模式设置为 GM_ADVANCED 并且字符方向从打印方向为 90 度时,此函数返回的值不遵循此规则。 当给定字符串的字符方向和打印方向匹配时,此函数返回 SIZE 结构中字符串的尺寸,如 { cx : 116,cy : 18 }。 当字符方向和打印方向为同一字符串相隔 90 度时,此函数返回 SIZE 结构中字符串的尺寸,如 { cx : 18, cy : 116 }。

此函数返回字符串中每个连续字符的范围。 当这些结果舍入到逻辑单元时,将获得的结果与从 GetCharWidth返回的结果不同,后者将返回舍入到逻辑单元的每个单独字符的宽度。

注意

wingdi.h 标头将 GetTextExtentExPoint 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 wingdi.h (包括 Windows.h)
Gdi32.lib
DLL Gdi32.dll

另请参阅

字体和文本功能

字体和文本概述

GetTextExtentPoint

SIZE