void CdemoDlg::OnPaint() {
CPaintDC dc(this);

const wchar_t* text = L"\
aaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbccccccccccccccccc\n\
111111111111111112222222222222222233333333333333333\n\
=================#################+++++++++++++++++===="; RECT rect = {0, 0, 100, 100};

dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(255, 0, 0));
dc.DrawText(text, &rect, DT_CALCRECT | DT_WORDBREAK);
dc.DrawText(text, &rect, DT_WORDBREAK);
}
以上代码我要的绘制的效果是:
aaaaaaaaaaaaaaaaabbbb
bbbbbbbbbbbbbcccccccc
ccccccccc
111111111111111112222
222222222222233333333
333333333
=================####
#############++++++++
+++++++++====但它出来的却是这样
aaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbccccccccccccccccc
111111111111111112222222222222222233333333333333333
=================#################+++++++++++++++++====

解决方案 »

  1.   

    另外 一个指针指向字符串
    字符串不能够更改
    lz要做聊天信息还是使用从string把!
      

  2.   

    显示固定行宽
    计算rect和显示的时候加上DT_EDITCONTROL
      

  3.   

    定义初始的rect,做一个循环,当遇到后一个字符和前一个不一样时就让rect的纵坐标往下移就实现自动换行了
      

  4.   


    very good这个参数有用,但还有一个小问题以下文字:
    "中国人----------------------------------------------------------------"
    我想画出来的结果是:中国人-------------------
    ------------------------
    ---------------------但结果却是:dc.DrawText(text, &rect, DT_EDITCONTROL | DT_CALCRECT | DT_WORDBREAK);
    dc.DrawText(text, &rect, DT_EDITCONTROL | DT_WORDBREAK);
    中国人
    ------------------------
    ------------------------
    ----------------