函数原型:
DrawText 函数在指定的矩形里写入格式化的正文,根据指定的方法对正文格式化(扩展的制表符,字符对齐、折行等)。
需要指定更多的格式选项,可以使用 DrawTextEx 函数。
API 函数原型:
int DrawText( _In_ HDC hDC, _Inout_ LPCTSTR lpchText, _In_ int nCount, _Inout_ LPRECT lpRect, _In_ UINT uFormat );
参数解析:
|
参数 |
含义 |
|
hDC |
指定“显示设备描述表”句柄 |
|
lpchText |
1. 指向将被写入的字符串的指针,如果参数 nCount 是 -1,则字符串必须是以 \0 结束的 |
|
nCount |
1. 指向字符串中的字符数 |
|
lpRect |
指向 RECT 结构的指针,其中包含文本将被置于其中的矩形的信息(按逻辑坐标) |
|
uFormat |
1. 指定格式化文本的方法 |
uFormat 参数各种标志解析
|
标志 |
含义 |
|
DT_BOTTOM |
对齐文字到矩形的底部,当且仅当设置了 DT_SINGLELINE 标志才有效 |
|
DT_CALCRECT |
1. 这个参数决定矩形的宽度和高度 |
|
DT_CENTER |
文本水平居中显示 |
|
DT_EDITCONTROL |
将拥有多行编辑控件的正文显示特性(尤其是平均字符宽度的计算方法,并且不会显示不可见的最后一行) |
|
DT_END_ELLIPSIS |
1. 对于显示的文本,如果结束的字符串的范围不在矩形内,它会被截断并以省略号标识 |
|
DT_EXPANDTABS |
1. 扩展制表符,每个制表符的缺省字符数是 8 |
|
DT_EXTERNALLEADING |
在行的高度里包含字体的外部标头(通常外部标头不被包含在正文行的高度里) |
|
DT_HIDEPREFIX |
1. 忽略正文中的前缀字符(&),并且前缀字符后面的字母不会出现下划线,其它前缀字符的调用方式不受影响 |
|
DT_INTERNAL |
用系统字体来计算正文尺寸 |
|
DT_LEFT |
正文左对齐 |
|
DT_MODIFYSTRING |
1. 允许系统修改给定的字符串来匹配显示的正文 |
|
DT_NOCLIP |
无裁剪绘制,使用 DT_NOCLIP 可以提高 DrawText 的效率 |
|
DT_NOFULLWIDTHCHARBREAK |
1. 在宽字符的字符串中防止行断开,因此折行规则相当于单字符的字符串 |
|
DT_NOPREFIX |
1. 关闭前缀字符的处理(通常 DrawText 解释 & 为给其后的字符加下划线,解释 && 为显示单个 &) |
|
DT_PATH_ELLIPSIS |
1. 对于过长的正文,自动替换字符串中间的字符为省略号(...),以确保结果能在合适的矩形内显示 |
|
DT_PREFIXONLY |
1. 仅仅在(&)前缀字符的位置下绘制一个下划线,但不绘制字符串中的任何其他字符 |
|
DT_RIGHT |
正文右对齐 |
|
DT_RTLREADING |
当设备环境的字体是希伯来文或阿拉伯文字体时,为双向正文安排从右到左的阅读顺序 |
|
DT_SINGLELINE |
显示正文的同一行,回车和换行符都不能换行 |
|
DT_TABSTOP |
1. 设置制表符,参数 uFormat 的 8~15 位(低位字中的高位字节)指定每个制表符的字符数,每个制表符的缺省字符数是 8 |
|
DT_TOP |
正文顶端对齐 |
|
DT_VCENTER |
使正文在矩形中垂直居中,当且仅当设置了 DT_SINGLELINE 标志才有效 |
|
DT_WORDBREAK |
1. 当一行中的字符将会延伸到由 lpRect 指定的矩形的边框时,此行自动地在单词之间断开 |
|
DT_WORD_ELLIPSIS |
截短不符合矩形的正文,并增加省略号(与 DT_END_ELLIPSIS 类似) |
返回值:
1. 如果函数调用成功,返回值是正文的高度(逻辑单位);
2. 如果指定了 DT_VCENTER 或 DT_BOTTOM,返回值是 lpRect -> top 到绘制的正文的底部的偏移值;
3. 如果 函数调用失败,返回值是 0。
备注:
1. 函数 DrawText 用设备环境中的字体选择、正文颜色和背景颜色来写正文。
2. DrawText 裁剪正文,使之不会出现在指定矩形的外面,除非指定了 DT_NOCLIP。
3. 除非使用 DT_SINGLELINE 格式化,否则其余的格式都认为正文有多行。
4. 如果选择的字体对指定的矩形而言太大,DrawText 并不会试图去换成一种小字体。
5. 设备环境的正文对齐方式必须包括 TA_LEFT, TA_TOP 和 TA_NOUPDATECP 标志。




