BOOL GetTextExtentPoint(
HDC hdc, // handle to DC
LPCTSTR lpString, // text string
int cbString, // number of characters in string
LPSIZE lpSize // string size
);
HDC hdc, // handle to DC
LPCTSTR lpString, // text string
int cbString, // number of characters in string
LPSIZE lpSize // string size
);
不断SetTextCharacterExtra设置字间距
再用GetTextExtentPoint32得的大小
选出与矩形区域最接近的那个GetTextExtentPoint, GetTextExtentPoint32 VB声明
Declare Function GetTextExtentPoint& Lib "gdi32" Alias "GetTextExtentPointA" (ByVal hdc As Long, ByVal lpszString As String, ByVal cbString As Long, lpSize As SIZE)
Declare Function GetTextExtentPoint32& Lib "gdi32" Alias "GetTextExtentPoint32A" (ByVal hdc As Long, ByVal lpsz As String, ByVal cbString As Long, lpSize As SIZE)
说明
判断一个字串的大小(范围)。在Win32环境中,最好使用GetTextExtentPoint32,它提供了更精确的计算结果
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hdc Long,设备场景的句柄
lpszString String,欲度量其范围(extent)的一个字串
cbString Long,lpszString字串的长度
lpSize SIZE,这个结构用于装载字串范围的高度和宽度信息
注解
这个函数不会将剪切区考虑在内,但却考虑到了由SetTextCharacterExtra函数设置的任何额外空间(间距)
因为VB字符串是UniCode格式的,一个汉字占一个UniCode字符
而GetTextExtentPoint32是ANSI+DBCS格式的,一个汉字占两个字节长度=LenB(StrConv(……, vbFromUniCode))那样的函数绝对没有