勇芳软件工作室.汉化:  Fonts and Text > Fonts and Text Functions >

DrawText

Previous pageReturn to chapter overviewNext page

描述

 

DrawText函数在指定的矩形中绘制格式化的文本。它根据指定的方法格式化文本(展开选项卡,调整字符,断开线等)。

 

要指定其他格式选项,请使用DrawTextEx功能。

 

C++ 语法

 

int DrawText(

__in     HDC hDC,

__inout  LPCTSTR lpchText,

__in     int nCount,

__inout  LPRECT lpRect,

__in     UINT uFormat

);

 

PowerBASIC 语法

 

FUNCTION DrawTextA ( _

BYVAL hdc AS DWORD, _

BYREF lpchText AS ASCIIZ, _

BYVAL nCount AS LONG, _

BYREF lpRect AS RECT, _

BYVAL uFormat AS DWORD _

) AS LONG

 

Unicode版本:

 

FUNCTION DrawTextW ( _

BYVAL hdc AS DWORD, _

BYREF lpchText AS WSTRINGZ, _

BYVAL nCount AS LONG, _

BYREF lpRect AS RECT, _

BYVAL uFormat AS DWORD _

) AS LONG

 

参数

 

hdc

 

[in]处理设备上下文。

 

lpchText

 

[in, out]指向要绘制的文本的字符串的指针。如果nCount参数为-1,则该字符串必须为空终止。

 

如果UFormat包含DT_MODIFYSTRING,该函数最多可以为该字符串添加四个附加字符。包含字符串的缓冲区应该足够大以容纳这些额外的字符。

 

nCount

 

[in]指定字符串TCHARS中的长度。如果nCount为-1??,则lpchText参数被假定为指向空终止字符串的指针,并且DrawText自动计算字符计数。

 

Windows 95/98 / Me:此数字不得超过8192。

 

lpRect

 

[in, out]指向包含要格式化文本的矩形(以逻辑坐标)的RECT结构的指针。

 

uFormat

 

[in]指定格式化文本的方法。此参数可以是以下值中的一个或多个。

 

含义

DT_BOTTOM

将文本对齐到矩形的底部。该值仅与DT_SINGLELINE值一起使用。

DT_CALCRECT

确定矩形的宽度和高度。如果有多行文本,DrawText将使用lpRect参数指向的矩形的宽度,并扩展矩形的底部以绑定文本的最后一行。如果最大的单词宽于矩形,则会扩大宽度。如果文本小于矩形的宽度,则缩小宽度。如果只有一行文本,DrawText修改矩形的右侧,以便它限定行中的最后一个字符。在任一情况下,DrawText返回格式化文本的高度,但不绘制文本。

DT_CENTER

在矩形中居中文字。

DT_EDITCONTROL

复制多行编辑控件的文本显示特性。具体而言,以与编辑控件相同的方式计算平均字符宽度,并且该函数不显示部分可见的最后一行。

DT_END_ELLIPSIS

对于显示的文本,如果字符串的末尾不适合矩形,则会被截断,并添加椭圆。如果不在字符串末尾的字符超出了矩形的限制,则它将被截断而不带椭圆。

 

除非指定了DT_MODIFYSTRING标志,否则字符串不会被修改。

 

与DT_PATH_ELLIPSIS和DT_WORD_ELLIPSIS进行比较。

DT_EXPANDTABS

展开制表符字符。每个标签的默认字符数为8。DT_WORD_ELLIPSIS,DT_PATH_ELLIPSIS和DT_END_ELLIPSIS值不能与DT_EXPANDTABS值一起使用。

DT_EXTERNALLEADING

包括字体外部领先于行高。通常,外部线条不包括在文本行的高度。

DT_HIDEPREFIX

Windows 2000 / XP / Vista / Windows 7:忽略文本中的&符号(&)前缀字符。下面的字母不会被加下划线,但是其他助记符前缀字符仍然被处理。

 

例:

 

输入字符串:“A &bc &&d”

正常:“Abc &d”

 

DT_HIDEPREFIX: "Abc&d"

 

与DT_NOPREFIX和DT_PREFIXONLY进行比较。

DT_INTERNAL

使用系统字体来计算文本度量。

DT_LEFT

将文本对准左侧。

DT_MODIFYSTRING

修改指定的字符串以匹配显示的文本。除非指定DT_END_ELLIPSIS或DT_PATH_ELLIPSIS,否则此值无效。

DT_NOCLIP

画没有剪辑。当使用DT_NOCLIP时,DrawText更快一些。

DT_NOFULLWIDTHCHARBREAK

Windows 98 / Me,Windows 2000 / XP / Vista / Windows 7:阻止在DBCS(双宽字符串)中的换行符,以便换行规则等同于SBCS字符串。例如,这可以在韩国窗口中使用,以增加图标标签的可读性。除非指定了DT_WORDBREAK,否则此值无效。

DT_NOPREFIX

关闭前缀字符的处理。通常,DrawText将助记符前缀字符&解释为用于强调以下字符的指令,并将助记符前缀字符&&作为打印单个&的指令。通过指定DT_NOPREFIX,此处理关闭。例如,

 

例:

 

输入字符串:“A &bc &&d”

正常:“Abc &d”

 

DT_NOPREFIX:“A &bc &&d”

 

与DT_HIDEPREFIX和DT_PREFIXONLY进行比较。

DT_PATH_ELLIPSIS

对于显示的文本,用椭圆替换字符串中间的字符,以使结果符合指定的矩形。如果字符串包含反斜杠(\\)字符,则DT_PATH_ELLIPSIS会在最后一个反斜杠之后保留尽可能多的文本。

 

除非指定了DT_MODIFYSTRING标志,否则字符串不会被修改。

 

与DT_END_ELLIPSIS和DT_WORD_ELLIPSIS进行比较。

DT_PREFIXONLY

Windows 2000 / XP / Vista / Windows 7:在符号(&)前缀字符后面的字符位置仅绘制下划线。不会在字符串中绘制任何其他字符。例如,

 

例:

 

输入字符串:“A &bc &&d”

正常:“Abc &d”

 

DT_PREFIXONLY: " _ "

 

与DT_HIDEPREFIX和DT_NOPREFIX进行比较。

DT_RIGHT

将文本对齐到右侧。

DT_RTLREADING

当hdc中选择的字体是希伯来语或阿拉伯语字体时,双向文本的右向左阅读顺序布局。所有文本的默认阅读顺序是从左到右。

DT_SINGLELINE

仅在一行上显示文字。回车和换行不会打破行。

DT_TABSTOP

设置制表位。uFormat参数的位15-8(低位字的高位字节)指定每个选项卡的字符数。每个标签的默认字符数为8。DT_CALCRECT,DT_EXTERNALLEADING,DT_INTERNAL,DT_NOCLIP和DT_NOPREFIX值不能与DT_TABSTOP值一起使用。

DT_TOP

将文本对齐到矩形的顶部。

DT_VCENTER

纵向中心文本。该值仅与DT_SINGLELINE值一起使用。

DT_WORDBREAK

打破话如果字词将延伸超过lpRect参数指定的矩形边缘,则字词之间的行会自动断开。回车线进给序列也打破了行。

 

如果没有指定,输出在一行。

DT_WORD_ELLIPSIS

截断任何不适合矩形的单词并添加椭圆。

 

与DT_END_ELLIPSIS和DT_PATH_ELLIPSIS进行比较。

 

返回值

 

如果函数成功,则返回值是逻辑单位的文本高度。如果指定了DT_VCENTER或DT_BOTTOM,则返回值是从lpRect.nTop到绘制文本底部的偏移量

 

如果函数失败,返回值为零。

 

备注

 

DrawText功能使用设备上下文的所选字体,文本颜色和背景颜色来绘制文本。除非使用DT_NOCLIP格式,否则DrawText会剪切文本,使其不会出现在指定的矩形之外。注意,具有显着悬垂的文本可能会被剪切,例如,文本字符串中的初始“W”或斜体文本。除非指定了DT_SINGLELINE格式,否则假定所有格式都有多行。

 

如果所选字体对于指定的矩形太大,则DrawText功能不会尝试替换较小的字体。

 

设备上下文的文本对齐模式必须包括TA_LEFT,TA_TOP和TA_NOUPDATECP标志。

 

Windows 95/98 / Me:Microsoft Layer for Unicode支持DrawTextW.

 

引用文件 #INCLUDE Once

 

WinUser.inc(包括Windows.inc)