DrawText函数在指定的矩形中绘制格式化的文本。它根据指定的方法格式化文本(展开选项卡,调整字符,断开线等)。
int DrawText(
HDC 【hDC】, | //处理设备上下文 |
LPCTSTR 【lpString】, | //指向要绘制的字符串的指针 |
INT 【NCOUNT】, | //字符串长度,以字符为单位 |
LPRECT 【LPRECT】, | //指向具有格式维度的结构的指针 |
UINT 【UFormat】 | //文字绘图标志 |
); |
参数
【hDC】
标识设备上下文。
【lpString】
指向要绘制的字符串。如果【NCOUNT】参数为-1,则字符串必须为空终止。
【NCOUNT】
指定字符串中的字符数。如果【NCOUNT】为-1,则【lpString】参数被假定为指向空终止字符串的指针,并且DrawText将自动计算字符数。
【LPRECT】
指向RECT结构,其中包含要格式化文本的矩形(以逻辑坐标)。
【UFormat】
指定格式化文本的方法。它可以是以下值的任意组合:
值 | 描述 |
DT_BOTTOM | 将文本对齐到矩形的底部。该值必须与DT_SINGLELINE组合。 |
DT_CALCRECT | 确定矩形的宽度和高度。如果有多行文本,DrawText使用【LPRECT】参数指向的矩形的宽度,并扩展矩形的底部以限制最后一行文本。如果只有一行文本,DrawText修改矩形的右侧,以便它限定行中的最后一个字符。在这两种情况下,DrawText返回格式化文本的高度,但不绘制文本。 |
DT_CENTER | 在矩形中居中文字。 |
DT_EDITCONTROL | 复制多行编辑控件的文本显示特性。具体而言,以与编辑控件相同的方式计算平均字符宽度,并且该函数不显示部分可见的最后一行。 |
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标志,否则此标志无效。 |
DT_NOCLIP | 画没有剪辑。当使用DT_NOCLIP时,DrawText的速度更快一点。 |
DT_NOPREFIX | 关闭前缀字符的处理。通常,DrawText将助记符前缀字符&解释为用于强调以下字符的指令,以及助记符前缀字符& &作为打印单个&的指令。通过指定DT_NOPREFIX,此处理关闭。 |
DT_RIGHT | 将文本对齐到右侧。 |
DT_RTLREADING | 当选择到【HDC】中的字体是希伯来语或阿拉伯语字体时,双向文本右侧到左侧阅读顺序的布局。所有文本的默认阅读顺序是从左到右。 |
DT_SINGLELINE | 仅在一行上显示文字。回车和换行不会打破行。 |
DT_TABSTOP | 设置制表位。【UFormat】参数的位15-8(低位字的高字节)指定每个选项卡的字符数。每个标签的默认字符数为8。 |
DT_TOP | 顶部对齐文本(仅限单行)。 |
DT_VCENTER | 纵向中心文本(仅限单行)。 |
DT_WORDBREAK | 打破话如果单词将延伸超过【LPRECT】参数指定的矩形边缘,则词之间的行会自动断开。回车换行序列也打破了行。 |
请注意,DT_CALCRECT,DT_EXTERNALLEADING,DT_INTERNAL,DT_NOCLIP和DT_NOPREFIX值不能与DT_TABSTOP值一起使用。
返回值
如果函数成功,则返回值是文本的高度。
备注
DrawText功能使用设备上下文的所选字体,文本颜色和背景颜色来绘制文本。除非使用DT_NOCLIP格式,否则DrawText将剪切文本,使其不会出现在指定的矩形之外。除非指定了DT_SINGLELINE格式,否则假定所有格式都有多行。
如果所选字体对于指定的矩形太大,则DrawText功能不会尝试替换较小的字体。
也可以看看