DrawText在字符串很长的情况下,并且在字符串中没有出现\n,这种情况下速度就会变得很慢,而在相同的情况下,EDIT控件的速度要快得多,请问哪位高手,能够写一个可以类似multiline风格的EDIT,并且有很高的效率,200分奉上.

解决方案 »

  1.   

    EDIT不是一次把全部都画出来,只画可见部分
      

  2.   

    而且是自己断行,用TextOut输出。DrawText的效率确实差。
      

  3.   

    楼上的两位大侠,我现在就是打算用TEXTOUT,问题出在断行上,在没有\n的情况下,我如何才能计算最合适的位置(和Multiline 的 edit一样的效果),进行断行????算法的要求和字体无关,不局限与英文.
      

  4.   

    用GetTextExtent函数得到字符串显示的总长度,然后根据每行显示的长度,进行断行
      

  5.   

    每行显示的长度是确定的,但是这不能确定在哪个字符处断行,字符的宽度和字体是相关的....
    GetTextExtent可以得到总长度,iTotalWidth,然后每行的长度确定,iLineWidth, 这些条件怎么确定换行???我现在还是想不通!
      

  6.   

    以什么格式显示的?不要与DT_SINGLELINE进行位或。
      

  7.   

    GetTextExtent可以得到总长度,iTotalWidth,然后每行的长度确定,iLineWidth, 这些条件怎么确定换行???我现在还是想不通!++++++++++++++++++++
    要尝试拆分的,根据字符串总长度和需要显示的区域宽度,大致上得出个比例来取子字符串,再进行计算,如此逐步得出结果。
      

  8.   

    都别吓强了,简直是一群笨蛋(也包括在下),:-),有一个二分跌带的算法,可以精确的算出最适应指定宽度的子串,把这些子串都TextOut出去就搞定了,这是我们公司一个小丫头的算法,丢人啊!呵呵.
      

  9.   

    二分跌带的算法也不能完全解决,当字符串长度很长时,速度还是会变慢,她的算法是用,二分法,对字符串进行二分,对它的长度进行无限的逼近,直到找到最合适的字符数,然后TEXTOUT,对剩下的字符串继续做同样的操作.这种算法的时间应该和长度的立方成正比.
    我现在有一个算法,时间和长度成线性关系,我现在已经把这个问题推下去了,偷个懒,我只DrawText 一定长度的字符串,超过这个长度,我就进行截取,所以现在没有这个问题了,谢谢上边这些高手,如果谁写个效率高的DrawText函数,那就太好了.