勇芳软件工作室.汉化:  Fonts and Text > Fonts and Text Functions >

GetTextExtentPoint32

Previous pageReturn to chapter overviewNext page

描述

 

GetTextExtentPoint32函数计算指定的文本字符串的宽度和高度。

 

C++ 语法

 

BOOL GetTextExtentPoint32(

__in  HDC hdc,

__in  LPCTSTR lpString,

__in  int c,

__out LPSIZE lpSize

);

 

PowerBASIC 语法

 

FUNCTION GetTextExtentPoint32A ( _

BYVAL hdc AS DWORD, _

BYREF lpString AS ASCIIZ, _

BYVAL c AS LONG, _

BYREF lpSize AS SIZE _

) AS LONG

 

Unicode版本:

 

FUNCTION GetTextExtentPoint32W ( _

BYVAL hdc AS DWORD, _

BYREF lpString AS WSTRINGZ, _

BYVAL c AS LONG, _

BYREF lpSize AS SIZE _

) AS LONG

 

参数

 

hdc

 

[in]处理设备上下文。

 

lpString

 

[in]指向指定文本字符串的缓冲区的指针。该字符串不需要为空终止,因为c参数指定字符串的长度。

 

c

 

[in]指定lpString指向的字符串的长度。

 

Windows 95/98 / Me:此值不得超过8192。

 

lpSize

 

[out]指向SIZE结构的指针,以逻辑单位接收字符串的维度。

 

返回值

 

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

 

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

 

备注

 

GetTextExtentPoint32函数使用当前选定的字体来计算字符串的尺寸。在不考虑任何裁剪的情况下,以逻辑单位计算宽度和高度。

 

因为某些设备的汉字字符,字符串中字符的范围之和可能不等于字符串的范围。

 

Windows 95/98 / Me:为了与Windows 3.1兼容,GetTextExtentPoint32为粗体模拟字体添加了一个额外的像素。然而,粗体Tahoma字体没有模拟,所以它没有任何额外的像素。要以粗体模拟字体校正额外的像素,请将传递给GetTextExtentPoint32的每个子字符串的长度减少一个像素,并为整个字符串添加一个额外的像素。

 

Windows XP:计算的字符串宽度考虑了SetTextCharacterExtra函数设置的字符间距和由SetTextJustification设置的对齐。对于在屏幕上显示和打印都是如此。但是,如果在ExtTextOut中设置lpDxGetTextExtentPoint32不会考虑字符间距或对齐方式。另外,对于EMF,打印结果总是考虑到字符间距和对齐。

 

Windows 2000:处理屏幕上显示的文本时,计算的字符串宽度将考虑由SetTextCharacterExtra函数设置的字符间距和由SetTextJustification设置的对齐。但是,如果在ExtTextOut中设置lpDxGetTextExtentPoint32不考虑字符间距或对齐。但是,当用EMF打印时:

 

·打印结果忽略字符间距,尽管GetTextExtentPoint32考虑在内。
·尽管GetTextExtentPoint32忽略了打印结果,但考虑到了理由。

 

当返回文本范围时,此函数假定文本是水平的,也就是说,擒纵机构始终为0。对于文本的水平和垂直测量都是如此。即使使用指定非零擒纵机构的字体,该函数也不会在计算文本范围时使用该角度。应用程序必须明确转换。

 

Windows 95/98 / Me:虽然Windows 95/98 / Me中存在GetTextExtentPoint32W,但Microsoft Layer for Unicode支持在所有Windows操作系统上提供更一致的行为。

 

引用文件 #INCLUDE Once

 

WinGdi.inc(包括Windows.inc)