RECT rect;
rect.left=0;
rect.top=0;
rect.right=100;
rect.bottom=300;
DrawText(hdc,"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊",40,&rect,DT_WORDBREAK);与
DrawText(hdc,"AADFAFDFafjadfjdfjahahhhhhhhhhhhhhhhhhh",40,&rect,DT_WORDBREAK);
这两种情况为什么第一个在超出rect范围时可以自动换行,而第二个却不行?

解决方案 »

  1.   

    DT_WORDBREAK Breaks lines between words if a word would extend past the edge of the display rectangle. A carriage return/line feed (CR/LF) sequence also breaks the line 该标志是表示一个字(可能占一个字节,也可能占两个字节)在一行的结尾显示的时候,如果剩余的空间刚好只能显示一半,这表示这个字的显示超出了显示范围,这时才进行换行显示,如果一个字只占一个字节,那么不会出现在剩余的空间刚好只能显示一半的情况,所以
    DrawTextW(hdc,L"AADFAFDFafja样dfjdfjahahhhhhhhhhhhhhhhhhhabc",40,&rect,DT_WORDBREAK);
    就会换行显示
     
      

  2.   

    平时多注意MSDN上怎么说的,学习
      

  3.   

    因为1个汉字就可以认为是一个单词,而系统将整个AADFAFDFafjadfjdfjahahhhhhhhhhhhhhhhhhh作为一个单词,DT—WORDBREAK是在单词结束时换行