DrawText

【勇芳软件工作室】汉化HomePreviousNext

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功能不会尝试替换较小的字体。

也可以看看

GrayString, TabbedTextOut, TextOut, RECT