看了论坛上大家对drawtext换行问题的研究,对大概的解决方法有了了解现遇到另两个关于换行的问题,希望帮忙1.出现如下情况时没有换行(其中的文本我用引号引起来了):pDC->DrawText(text,&CRect(0,0,10,10),DT_NOCLIP|DT_WORDBREAK)
text="换行换行
===============================
换行换行"
就这样换三行,但是"="这个符号不会换行,怎么回事??2.如果,会有滚动条出现的话,应该还要把滚动条的宽度(垂直滚动条)计算进去.但是滚动条是动态出现的,这种情况,我怎么判断滚动条出现了?怎么计算?
希望各位再次帮忙

解决方案 »

  1.   

    1、即使是中文,该函数的换行也是用一种分词算法来实现的,连续的等号他认为是一个词,所以没有从中间折行
    2、如果滚动条的显示和隐藏是由你控制的,则你需要在绘制前检查输出的文本会不会导致滚动条出现,如果会,把可用的宽度去掉滚动条的宽度后在此计算你的折行位置;如果不是你控制的,那就更简单,输出前检查一下滚动条是否存在就可以了,而且,GetClientRect() 得到的矩形本来就不包括滚动条
      

  2.   

    那么就是说如果问题一的"="如果没有使用"/n/r"就没有办法用drawtext换行?
      

  3.   

    drawtext的换行原则是从单词的分界处换行。英文按空格为分界,汉字则按两个字节(大概是)为一个字。你想在=之间换行,只需在它们之间用空格隔开即可
      

  4.   

    如果你使用的CVIEW的基类的话,换行符和回车符一样是无法识别的,换行要自己写代码,如果你使用CEditView的话,它继承了CView,而且可以直接使用'/n'换行。