none
GetTextExtentExPoint关于这个函数实现自动换行的效果 RRS feed

  • 问题

  • 无意之中遇到了这个函数,msdn有点看不懂,看到网上说这个函数结合字符输出函数可以达到很好的自动换行效果,但是我一时间没有头绪,不知道是怎么实现的?

    高手可以解释一下吗???

    2011年10月18日 11:13

答案

  • 函数原型:

    BOOL GetTextExtentPoint(HDC hdc, LPCTSTR lpszStr, int cchString, int nMaxExten, LPINT lpnFit, LPINT alpDx, LPSIZE lpSize);

    函数功能:该函数取得一个指定字符串里的字符数,该字符串将符合一个指定的空间,并且将其中每一个字符的范围放入一个数组。(一个正文的范围是指空间开始处到一个字符的间距)。此函数对自动换行的计算非常有用。

    参数:
    (输入参数)hdc:设备环境句柄。

    (输入参数)lpszStr:指向以/0(Null)结束的字符串的指针,函数取得该字符中的范围。

    (输入参数)cchString:指定由lpszStr指向的字符串的字符数。

    (输入参数)nMaxExtent:为格式经的字符串指定最大可允许的逻辑单位宽度。

    (输出参数)lpnFit:指向整数的指针,该整数用于接收符合指定范围的字符的最大个数,该范围由nMaxExtent指定。如果lpnFit为NULL,则nMaxExtent无效。

    (输出参数)alpDx:指向整数数组的指针,该数组用于接收部分字符串中每个字符相对于起始点的像素距离。此数组的每一个元素,表示字符串的开始处每个字符之间的距离(按都在一行算,我算出来的是这样,但是别的资料不是这样说)。如果alpDx为NULL,则函数不计算局部字符串宽度。

    (输出参数)lpSize:指向结构SIZE的指针,该结构在函数返回时含有字符串的尺寸(按逻辑单位)。

    布尔类型返回值:如果函数调用成功,返回值非零,如果函数调用失败,返回值是0。


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已建议为答案 Helen Zhao 2011年10月20日 2:08
    • 已标记为答案 Helen Zhao 2011年10月26日 1:31
    2011年10月18日 13:21
    版主

全部回复

  • 函数原型:

    BOOL GetTextExtentPoint(HDC hdc, LPCTSTR lpszStr, int cchString, int nMaxExten, LPINT lpnFit, LPINT alpDx, LPSIZE lpSize);

    函数功能:该函数取得一个指定字符串里的字符数,该字符串将符合一个指定的空间,并且将其中每一个字符的范围放入一个数组。(一个正文的范围是指空间开始处到一个字符的间距)。此函数对自动换行的计算非常有用。

    参数:
    (输入参数)hdc:设备环境句柄。

    (输入参数)lpszStr:指向以/0(Null)结束的字符串的指针,函数取得该字符中的范围。

    (输入参数)cchString:指定由lpszStr指向的字符串的字符数。

    (输入参数)nMaxExtent:为格式经的字符串指定最大可允许的逻辑单位宽度。

    (输出参数)lpnFit:指向整数的指针,该整数用于接收符合指定范围的字符的最大个数,该范围由nMaxExtent指定。如果lpnFit为NULL,则nMaxExtent无效。

    (输出参数)alpDx:指向整数数组的指针,该数组用于接收部分字符串中每个字符相对于起始点的像素距离。此数组的每一个元素,表示字符串的开始处每个字符之间的距离(按都在一行算,我算出来的是这样,但是别的资料不是这样说)。如果alpDx为NULL,则函数不计算局部字符串宽度。

    (输出参数)lpSize:指向结构SIZE的指针,该结构在函数返回时含有字符串的尺寸(按逻辑单位)。

    布尔类型返回值:如果函数调用成功,返回值非零,如果函数调用失败,返回值是0。


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已建议为答案 Helen Zhao 2011年10月20日 2:08
    • 已标记为答案 Helen Zhao 2011年10月26日 1:31
    2011年10月18日 13:21
    版主
  • 计算绘制字符的长度

    如果超出预定范围就在下一行绘制

    这就是所谓自动换行

    2011年10月19日 2:18