CDC::DrawText

virtual int DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat);
int DrawText(const CString& str, LPRECT lpRect, UNIT nFormat);

返回值:如果成功,则返回文本高度。

参数:
lpszString指向要绘制的文本的指针。如果nCount是-1,该字符串必须是空终止的。
nCount字符串中字符数目。如果为-1,lpszString被认为是一个指向空终止的字符串的长指针。DrawText自动计算字符数目。
lpRect指向RECT结构或CRect对象的指针,结构(或对象)中包含有矩形(逻辑单位表示),其中的文本带有格式。
str含有要被绘制的文本的CString对象。
nFormat指定格式化文本的方法。它可以是下列值的组合(可用运算符或位操作符进行组合):
DT_BOTTOM底部对齐的文本。该值必须同DT_SINGLELINE组合使用。
DT_CALCRECT决定矩形的宽度和高度,如果是多行文字,DrawText将会使用lpRect指向的矩形,并扩展矩形以容纳文本。如果是单行文本,DrawText将会调整矩形的右边以便容纳该行文字。两种情况下,DrawText都返回格式化文本的高度,但并不绘制它们。
DT_CENTER将文本水平居中。
DT_END_ELLIPSIS或DT_PATH_ELLIPSIS如果必要,将用椭圆替代部分指定的文本,以便适合给定的矩形。除非指定DT_MODIFYSTRING 标志,否则给定的字符串不会被修改。可以指定DT_END_ELLIPSIS在字符串末端替代字符,或者指定DT_PATH_ELLIPSIS在字符串中间替代字符。如果字符串中含有反斜杠(\),DT_PATH_ELLIPSIS将尽可能保存在最后一个反斜杠后的文本。
DT_EXPANDTABS扩展制表符,每一制表符所含字符的缺省数目是8。
DT_EXTERNALLEADING包括在行高中的字体外部间隔。通常外部间隔不包括在一行文本的高度之中。
DT_LEFT文本左对齐。
DT_MODIFYSTRING修正给定字符串以便与显示文本匹配。只有在指定了DT_END_ELLIPSIS 或DT_PATH_ELLIPSIS 标志时,该标志才起作用。
注意:某些uFormat标志组合能导致传递的字符串受到修改。DT_MODIFYSTRING同DT_END_ELLIPSIS 或DT_PATH_ELLIPSIS 一起使用会导致字符串修改,导致在CString覆盖中插入断言。
DT_NOCLIP绘制但不剪切, DrawText在使用DT_NOCLIP后总能运行得快一些。
DT_NOPREFIX关闭前缀字符,通常DrawText将助记前缀&理解为其后字符加上下划线,&&前缀符表示显示一个&字符,指定DT_NOPREFIX后,也关闭了这种处理。
DT_PATH_ELLIPSIS
DT_RIGHT文本右对齐。
DT_SINGLELING指定单行,回车与换行不会中断该行。
DT_TABSTOP设置制表位,nFormat的高位字节即为每一制表符所含字符的数目,缺省值为8。

说明:
在给定的矩形内调用该成员函数格式化文本。通过将制表值扩展到适当大小,使文本在给定矩形内左对齐、右对齐或居中,使文本断成多行以适应给定矩形来格式化文本,格式类型由nFormat指定。
该成员函数适应设备上下文中选取的字体、文本颜色、背景色来显示文本。在采用DT_NOCLIP格式时,DrawText剪切不会使文本显示超过矩形范围,除非选择DT_SINGLELINE格式,所有格式都认为适用于多行文本。
如果所选字体相对于矩形范围过大,DrawText成员函数并不用较小的字体来代替。
如果指定了DT_CALCRECT标志,由lpRect 指定的矩形将会更新,以反映显示文本需要的高度和宽度。
如果TA_UPDATECP文本对齐标志已经设置(见CDC::SetTextAlign),DrawText将在当前位置开始显示文本,而不是在矩形的左边。DrawText在TA_UPDATECP标志已经设置的情况下不会折行(即DT_WORDBREAK标志不起作用)。
文本颜色由CDC::SetTextColor设置。

请参阅:
CDC::SetTextColor, CDC::ExtTextOut, CDC::TabbedTextOut, CDC::TextOut, ::DrawText, RECT, CDC::SetTextAlign