Функция _WinAPI_DrawText

 ↑  ←  Описание функции


_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 - Duplicates the text-displaying characteristics of a multiline edit control
    $DT_END_ELLIPSIS - Заменяет часть строки многоточием, если она не умещается в прямоугольник
    $DT_EXPANDTABS - Раскрывает символ табуляции
    $DT_EXTERNALLEADING - Includes the font external leading in line height
    $DT_HIDEPREFIX - Игнорирует символ амперсанд (&) в строке, если он является префиксом (предшествующий, первый).
    Следующая за ним буква не будет подчёркнутой, но другие мнемонические префиксы по прежнему будут обрабатываться.
    $DT_INTERNAL - Использует системный шрифт для вычисления метрики текста
    $DT_LEFT - Выравнивание текста по левому краю
    $DT_MODIFYSTRING - Модифицирует данную строку в соответствии с отображаемым текстом
    $DT_NOCLIP - рисует, не обрезая строку по границе прямоугольника
    $DT_NOFULLWIDTHCHARBREAK - Prevents a line break at a DBCS (double-wide character string), so that the line breaking rule is equivalent to SBCS strings.
    For example, this can be used in Korean windows, for more readability of icon labels.
    This value has no effect unless $DT_WORDBREAK is specified
    $DT_NOPREFIX - Не обрабатывает префиксы
    $DT_PATH_ELLIPSIS - Для отображаемого текста, заменяет символы в середине строки многоточием так, что результат умещается в указанном прямоугольнике. Если строка содержит символы обратной косой черты (\), то $DT_PATH_ELLIPSIS сохраняет как можно больше текста после последней обратной косой черты. Строка не изменяется, если не указан флаг $DT_MODIFYSTRING. Применяется для отображения пути к файлу.
    $DT_PREFIXONLY - Рисует только линии подчёркивания в позициях символов следующих за амперсандом (&). Не рисует ни каких других символов в строке
    $DT_RIGHT - Выравнивание текста по правому краю
    $DT_RTLREADING - Отображает строку в направлении справа-налево
    $DT_SINGLELINE - Весь текст отображается только в одной строке
    $DT_TABSTOP - Устанавливает позиции табуляции. Биты 15-8 флага $iFlags указывают количество символов для каждой табуляции
    $DT_TOP - Выравнивает текст к верхнему краю прямоугольника (только если текст в одну строку)
    $DT_VCENTER - Центрирует текст по вертикали (только если текст в одну строку)
    $DT_WORDBREAK - Breaks words
    $DT_WORD_ELLIPSIS - Обрезает любое слово, которое не помещается в прямоугольник и добавляет многоточие

Возвращаемое значение

Успех:Возвращает высоту текста
Ошибка:Возвращает 0

Примечания

Для рисования текста функция DrawText использует шрифт, цвет текста и фон указанного контекст устройства. При отсутствии флага $DT_NOCLIP, функция DrawText рисует текст так, чтобы он не появлялся за пределами указанного прямоугольника. Во всех случаях форматирования предполагается, что текст является многострочным, если не указан флаг $DT_SINGLELINE. Если выбранный шрифт слишком большой, DrawText не пытаться заменить его шрифтом меньшего размера.

Необходим WindowsConstants.au3 для выше указанных констант

См. также

$tagRECT, _WinAPI_GetBkMode, _WinAPI_SetBkMode

См. также

Искать DrawText в библиотеке 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, "Привет мир!", $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