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 函数使用当前所选字体来计算字符串的尺寸。 以逻辑单位表示的宽度和高度在计算时不考虑任何剪裁。
由于某些设备包含字符,因此字符串中字符范围的总和可能不等于字符串的范围。
计算的字符串宽度考虑由 SetTextCharacterExtra 函数设置的字符间距和 SetTextJustification 设置的理由。 这适用于在屏幕上显示和打印。 但是,如果在 ExtTextOut 中设置 lpDx,则 GetTextExtentPoint32 不会考虑字符间间距或理由。 此外,对于 EMF,打印结果始终同时考虑字符间间距和理由。
处理屏幕上显示的文本时,计算的字符串宽度会考虑 SetTextCharacterExtra 函数设置的字符间距和 SetTextJustification 设置的理由。 但是,如果在 ExtTextOut 中设置 lpDx,则 GetTextExtentPoint32 不会考虑字符间间距或理由。 但是,使用 EMF 打印时:
- 尽管 GetTextExtentPoint32 考虑了字符间间距,但打印结果会忽略字符间间距。
- 尽管 GetTextExtentPoint32 忽略了打印结果,但打印结果会考虑理由。
GetTextExtentPoint32 在计算文本字符串的高度时,不考虑“\n” (新行) 或“\r\n”, (回车符和新行) 字符。
示例
有关示例,请参阅 在同一行上从不同字体绘制文本。
注意
wingdi.h 标头将 GetTextExtentPoint32 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | wingdi.h (包括 Windows.h) |
Library | Gdi32.lib |
DLL | Gdi32.dll |