函数参考


_WinAPI_DrawText

在指定的矩形中绘出格式化的文本

#Include <WinAPI.au3>
_WinAPI_DrawText($hDC, $sText, ByRef $tRect, $iFlags)

参数

$hDC 设备环境的标识
$sText 文本字符串
$tRect 包含矩形文本的 $tagRECT 结构
$iFlags 指定格式文本的方法:
$DT_BOTTOM - 文本对齐到矩形的底部
$DT_CALCRECT - 确定矩形的宽度和高度
$DT_CENTER - 文本在矩形内水平居中
$DT_EDITCONTROL - 重复多行文本编辑控件中文本的显示特点
$DT_END_ELLIPSIS - 如果必要,用省略号替换给定字符串的一部分
$DT_EXPANDTABS - 扩展制表符
$DT_EXTERNALLEADING - 字体高度一致
$DT_HIDEPREFIX - 忽略文本的(&)前缀字符.
跟随的字母将不会出现下划线,但其他记忆前缀字符仍将处理.
$DT_INTERNAL - 使用系统字体计算文本规格
$DT_LEFT - 文本左对齐
$DT_MODIFYSTRING - 修改给定的字符串匹配显示的文本
$DT_NOCLIP - 无剪辑绘制
$DT_NOFULLWIDTHCHARBREAK - 防止换行符为 DBCS(双宽字符的字符串), so that the line breaking rule is equivalent to SBCS strings.
例如,这可以用在朝鲜文的窗口,增加标签图标的更多可读性.
除非指定 $DT_WORDBREAK,否则此值没有任何效果
$DT_NOPREFIX - 关闭前缀字符的处理
$DT_PATH_ELLIPSIS - 对于显示的文本,替换字符串的省略号,以确保测试结果适合指定的矩形.
如果字符串包含反斜杠(\)字符, $DT_PATH_ELLIPSIS 尽可能保留文本最后一个反斜杠.
除非指定 $DT_MODIFYSTRING 标志,否则不修改字符串
$DT_PREFIXONLY - 仅绘制(&)前缀字符位置的下划线.
不绘制字符串中任何其它的字符
$DT_RIGHT - 文本右对齐
$DT_RTLREADING - 双向文字的阅读顺序从右到左
$DT_SINGLELINE - 显示文字只有一行
$DT_TABSTOP - 设置制表位. $iFlags 参数指定标签中的字符数位为 15-8
$DT_TOP - 顶部对齐文本(仅单行)
$DT_VCENTER - 中心垂直文本(仅单行)
$DT_WORDBREAK - 单词突变
$DT_WORD_ELLIPSIS - 截断不适合在该矩形的任何词,并添加省略号

返回值

成功: 返回文本的高度
失败: 返回 0

注意/说明

 DrawText 函数使用设备环境选定的字体,文本颜色和背景颜色绘制文本.
 除非使用 $DT_NOCLIP 格式, DrawText 剪辑文本,以便不会超出规定的矩形.
 除非指定 $DT_SINGLELINE 格式,所有格式都假设为多行.
 如果所选的字体太大, DrawText 并不试图使用较小的字体取代.
 需要 WindowsConstants.au3 预先定义的常量

相关

$tagRECT, _WinAPI_GetBkMode, _WinAPI_SetBkMode

详情参考

在MSDN中搜索


示例/演示


#include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <FontConstants.au3>

Global $tRECT, $hFont, $hOldFont, $hDC

HotKeySet("{ESC}", "_Exit")

$tRECT = DllStructCreate($tagRect)
DllStructSetData($tRECT, "Left", 5)
DllStructSetData($tRECT, "Top", 5)
DllStructSetData($tRECT, "Right", 250)
DllStructSetData($tRECT, "Bottom", 50)

$hDC = _WinAPI_GetDC(0)
$hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _
        $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
$hOldFont = _WinAPI_SelectObject($hDC, $hFont)

_WinAPI_SetTextColor($hDC, 0x0000FF)
_WinAPI_SetBkColor($hDC, 0x000000)
; 注释下一行可以获得黑色背景而不是透明背景
_WinAPI_SetBkMode($hDC, $TRANSPARENT)

While 1
    _WinAPI_DrawText($hDC, "Hello world!", $tRECT, $DT_CENTER)
    Sleep(100)
WEnd

Func _Exit()
    _WinAPI_SelectObject($hDC, $hOldFont)
    _WinAPI_DeleteObject($hFont)
    _WinAPI_ReleaseDC(0, $hDC)
    _WinAPI_InvalidateRect(0, 0)
    $tRECT = 0
    Exit
EndFunc   ;==>_Exit