CDC::DrawText

 

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

字符串中字符数目。如果为-1lpszString被认为是一个指向空终止的字符串的长指针。DrawText自动计算字符数目。

lpRect

指向RECT结构或CRect对象的指针,结构(或对象)中包含有矩形(逻辑单位表示),其中的文本带有格式。

str

含有要被绘制的文本的CString对象。

nFormat

指定格式化文本的方法。它可以是下列值的组合(可用运算符或位操作符进行组合):

DT_BOTTOM

底部对齐的文本。该值必须同DT_SINGLELINE组合使用。

DT_CALCRECT

决定矩形的宽度和高度,如果是多行文字,DrawText将会使用lpRect指向的矩形,并扩展矩形以容纳文本。如果是单行文本,DrawText将会调整矩形的右边以便容纳该行文字。两种情况下,DrawText都返回格式化文本的高度,但并不绘制它们。

DT_CENTER

将文本水平居中。

DT_END_ELLIPSISDT_PATH_ELLIPSIS

如果必要,将用椭圆替代部分指定的文本,以便适合给定的矩形。除非指定DT_MODIFYSTRING 标志,否则给定的字符串不会被修改。可以指定DT_END_ELLIPSIS在字符串末端替代字符,或者指定DT_PATH_ELLIPSIS在字符串中间替代字符。如果字符串中含有反斜杠(/),DT_PATH_ELLIPSIS将尽可能保存在最后一个反斜杠后的文本。

DT_EXPANDTABS

扩展制表符,每一制表符所含字符的缺省数目是8

DT_EXTERNALLEADING

包括在行高中的字体外部间隔。通常外部间隔不包括在一行文本的高度之中。

DT_LEFT

文本左对齐。

DT_MODIFYSTRING

修正给定字符串以便与显示文本匹配。只有在指定了DT_END_ELLIPSISDT_PATH_ELLIPSIS 标志时,该标志才起作用。注意:某些uFormat标志组合能导致传递的字符串受到修改。DT_MODIFYSTRINGDT_END_ELLIPSIS DT_PATH_ELLIPSIS 一起使用会导致字符串修改,导致在CString覆盖中插入断言。

DT_NOCLIP

绘制但不剪切, DrawText在使用DT_NOCLIP后总能运行得快一些。 

DT_NOPREFIX

关闭前缀字符,通常DrawText将助记前缀&理解为其后字符加上下划线,&&前缀符表示显示一个&字符,指定DT_NOPREFIX后,也关闭了这种处理。

DT_RIGHT

文本右对齐。

DT_SINGLELING

指定单行,回车与换行不会中断该行。

DT_TABSTOP

设置制表位,nFormat的高位字节即为每一制表符所含字符的数目,缺省值为8

  说明:

在给定的矩形内调用该成员函数格式化文本。通过将制表值扩展到适当大小,使文本在给定矩形内左对齐、右对齐或居中,使文本断成多行以适应给定矩形来格式化文本,格式类型由nFormat指定。

    该成员函数适应设备上下文中选取的字体、文本颜色、背景色来显示文本。在采用DT_NOCLIP格式时,DrawText剪切不会使文本显示超过矩形范围,除非选择DT_SINGLELINE格式,所有格式都认为适用于多行文本。

如果所选字体相对于矩形范围过大,DrawText成员函数并不用较小的字体来代替。

在这个有格式是DT_CALCRECT,如果指定了DT_CALCRECT标志,由lpRect 指定的矩形将会更新,以反映显示文本需要的高度和宽度。这样就可以很容易地获取刚好容纳文本的矩形大小。但是也有一点就是它并不去绘制文本,所以在你设定这个格式进行输出时并不能看到文本,如果想看到文本,必须再次调用该函数绘制一遍(不要再把nFormat设置成DT_CALCRECT)。

 

http://blog.csdn.net/haoqin168/archive/2009/12/09/4970225.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值