我现在用DrawText把一串较长的字符串画到一个矩形里面,并且会自动换行;
请问下如何才能知道DrawText把这个字符串画成了多少行呢?画出的这整个字符串有多高?

解决方案 »

  1.   

    GetTextMetrics:获取当前字体的信息GetTextExtent:获取特定的字符串在屏幕上所占的宽度和高度对于这两个函数的作用,我在编程的时候,也有一定的困惑。因此,我也想,其他人在编程的时候也肯定有 同样的困惑。所以我把他们解释一下。不足之处,还请大家多多的添加 批评~~其实,我们对什么困惑呢?函数的调用方法,还是在返回值上?CDC::GetTextMetrics作用:返回当强设备描述表中的当前所用的字体的信息函数原型:BOOL GetTextMetrics(
       LPTEXTMETRIC lpMetrics
    ) const;参数:
    lpMetrics (是一个指针)
    返回指向TEXTMETRIC 结构的一个数据。返回值:
    非零值成功要求:
    包含头文件: afxwin.h
    CDC::GetTextExtent
    Call this member function to compute the width and height of a line of text using the current font to determine the dimensions.
    调用这个函数,返回用当前字体写下的一行字符串的高度和宽度函数原型:
    CSize GetTextExtent(
       LPCTSTR lpszString,
       int nCount
    ) const;CSize GetTextExtent(
       const CString& str
    ) const;参数
    lpszString指向一个字符串指针,也可以传递一个字符串对象。
    nCount指定字符在字符串中的数目
    str一个字符串对象,包含指定的字符。
    返回值:以逻辑单位返回字符串的尺寸,保存在一个CSize对象中要求:包含头文件 afxwin.h
      

  2.   

    好像理解上有点不对。
    我的意识是,我用DrawText画一个很长的字符串子一个固定矩形里面,并且设置了自动换行;
    此时这个很长的字符串会在这个矩形里面换成几行或很多行,此时我怎么知道这个字符串在这个矩形里面的整个高度???
    例如:
    我画字符串str1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbb",在一个长20,宽10的矩形里面,此时可能这个str1字符串会换行成3行:
    aaaaaaaaaa
    aaaaaaaaaa
    aaabbbbbbb
    这个时候我想知道,这个字符串在矩形中总共有多高? 也就是这三行一起有多高?上面两个函数好像都只能取到单行的高度,但是这时候我不知道系统吧这个字符串画成了几行啊?
    因为画几行是系统自动根据矩形宽度进行调整的。请高人指点下。上面那个
      

  3.   

    好象没有直接的函数,需要自己计算,用字符串总字数/(Ranctangle宽度/字体宽度).我就是这样干的,不过不很精确。