CDC::DrawText( LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat );
nFormat 指定为DT_CALCRECT   (计算所需要的尺寸,此时不会绘制,只是计算)
传入的lpRect中定好宽度
详见MSDN中
用此函数计算每一段需要的高度,按此高度绘制
再计算总高度,求出滚动需要的信息。使用矢量字体时,字符是不等宽的。不能用乘法简单得知绘制宽度。
如果需要自己计算,需要用到GetTextExtent,但需要预先使用IsDBCSLeadByte等判断好是否半个汉字,再判断换行处。我有编写编辑器经验,需要的化,可以提供详细帮助。