环境:Visual C++ 6.0
问题:GetTextMetrics和GetTextExtent用法区别
解决:
先来看看MSDN里对它们的解释:
GetTextMetrics:
CDC::GetTextMetrics
BOOLGetTextMetrics( LPTEXTMETRIC lpMetrics) const;
Return Value
Nonzeroif the function is successful; otherwise 0.
Parameters
lpMetrics
Pointsto the TEXTMETRIC structure thatreceives the metrics.
Remarks
Retrievesthe metrics for the current font using the attribute device context.
GetTextExtent:
CDC::GetTextExtent
CSizeGetTextExtent( LPCTSTR lpszString, intnCount) const;
CSizeGetTextExtent( const CString& str ) const;
Return Value
Thedimensions of the string (in logical units) in a CSizeobject.
Parameters
lpszString
Pointsto a string of characters. You can also pass a CStringobject for this parameter.
nCount
Specifiesthe number of characters in the string.
str
ACStringobject that contains the specified characters.
Remarks
Callthis member function to compute the width and height of a line of text usingthe current font to determine the dimensions. The information is retrieved from m_hAttribDC, the attribute devicecontext.
Thecurrent clipping region does not affect the width and height returned by GetTextExtent.
Sincesome devices do not place characters in regular cell arrays (that is, theycarry out kerning), the sum of the extents of the characters in a string maynot be equal to the extent of the string.
总结:
1. 本身字体的高度:GetTextMetrics;
2. 求取屏幕上字符串显示的宽度和高度:用GetTextExtent。