描述
GetTextExtentExPoint函数检索指定字符串中适合指定空间的字符数,并使用每个字符的文本扩展名填充数组。(文本范围是空格开头和适合空格的字符之间的距离。)此信息对于文字包装计算非常有用。
C++ 语法
BOOL GetTextExtentExPoint( __in HDC hdc, __in LPCTSTR lpszStr, __in int cchString, __in int nMaxExtent, __out LPINT lpnFit, __out LPINT alpDx, __out LPSIZE lpSize ); |
PowerBASIC 语法
FUNCTION GetTextExtentExPointA ( _ BYVAL hdc AS DWORD, _ BYREF lpszStr AS ASCIIZ, _ BYVAL cchString AS LONG, _ BYVAL nMaxExtent AS LONG, _ BYREF lpnFit AS LONG, _ BYREF alpDx AS LONG, _ BYREF lpSize AS SIZE _ ) AS LONG |
Unicode版本:
FUNCTION GetTextExtentExPointW ( _ BYVAL hdc AS DWORD, _ BYREF lpszStr AS WSTRINGZ, _ BYVAL cchString AS LONG, _ BYVAL nMaxExtent AS LONG, _ BYREF lpnFit AS LONG, _ BYREF alpDx AS LONG, _ BYREF lpSize AS SIZE _ ) AS LONG |
参数
hdc
[in]处理设备上下文。
lpszStr
[in]指向要为其检索范围的以null结尾的字符串的指针。
cchString
[in]指定lpszStr参数指向的字符串中的字符数。对于ANSI调用,它指定字符串长度(以字节为单位),Unicode指定了WORDs中的字符串长度。请注意,对于ANSI函数,SBCS代码页中的字符每个字节为一个字节,而DBCS代码页中的大多数字符占用两个字节;对于Unicode功能,大多数当前定义的Unicode字符(基本多语言平面(BMP)中的Unicode字符)是一个WORD,而Unicode代理是两个WORDs.
Windows 95/98 / Me:此值不得超过8192。
nMaxExtent
[in]指定格式化字符串的最大容许宽度(以逻辑为单位)。
lpnFit
[out]指向一个整数的指针,该整数接收到适合nMaxExtent参数指定空间的最大字符数的计数。当lpnFit参数为NULL时,nMaxExtent参数将被忽略。
alpDx
[out]指向接收部分字符串扩展数组的整数数组的指针。数组中的每个元素以逻辑单位给出了在字符串的开头和适合nMaxExtent参数指定空间的字符之间的距离。该数组必须至少包含与cchString参数指定的字符一样多的元素,因为整个数组在内部使用。该函数使用lpnFit参数指定的字符填充有效范围的数组。数组其余部分的任何值都应该被忽略。如果alpDx为NULL,则该函数不计算部分字符串宽度。
对于复杂的脚本,其中一系列字符可以由任意数量的字形表示,alpDx数组中由lpnFit参数指定的数字的值与代码点一一对应。同样,您应该忽略alpDx数组中的其余值。
lpSize
[out]指向SIZE结构的指针,以逻辑单位接收字符串的维度。此参数不能为NULL。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。
备注
如果lpnFit和alpDx参数都为NULL,则调用GetTextExtentExPoint函数等效于调用GetTextExtentPoint函数。
对于ANSI版本GetTextExtentExPoint,lpDx数组的ID值与lpString中的字节数相同。对应于DBCS字符的两个字节的INT值分别是整个复合字符的范围。
请注意,GetTextExtentExPoint的alpDx值与ExtTextOut的lpDx值不同。要使用lpDx中的alpDx值,必须先处理它们。
当返回文本范围时,此函数假定文本是水平的,也就是说,擒纵机构始终为0。对于文本的水平和垂直测量都是如此。即使使用指定非零擒纵机构的字体,该函数也不会在计算文本范围时使用该角度。应用程序必须明确转换。
此函数返回字符串中每个连续字符的范围。当它们四舍五入为逻辑单位时,您会得到与GetCharWidth返回的结果不同的结果,该结果将每个单个字符的宽度四舍五入为逻辑单位。
Windows 95/98 / Me:Microsoft Layer for Unicode支持GetTextExtentExPointW.
引用文件 #INCLUDE Once
WinGdi.inc(包括Windows.inc)