描述
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)