UDF > WinAPIEx > GDI > DeviceContext >


_WinAPI_DrawText

Dessine un texte formaté dans le rectangle spécifié

#include <WinAPIGdiDC.au3>
_WinAPI_DrawText ( $hDC, $sText, ByRef $tRECT, $iFlags )

Paramètres

$hDC Identifie le contexte de périphérique
$sText La chaîne à dessiner
$tRect Structure $tagRECT qui définit le rectangle qui contiendra le texte
$iFlags Précise la méthode de formatage du texte:
$DT_BOTTOM - Justifie le texte au bas du rectangle
$DT_CALCRECT - Détermine la largeur et la hauteur du rectangle
$DT_CENTER - Centre le texte horizontalement dans le rectangle
$DT_EDITCONTROL - Duplique les caractéristiques d'affichage du texte à partir d'un contrôle Edit multiligne
$DT_END_ELLIPSIS - Remplace une partie de la chaîne donnée par des ellipses si nécessaire
$DT_EXPANDTABS - Etend les caractères de tabulation
$DT_EXTERNALLEADING - Inclut les jambages de la police externe dans la hauteur de ligne
$DT_HIDEPREFIX - Ignore le caractère esperluette (&) en préfixe dans le texte.
La lettre qui suit ne sera pas souligné, mais d'autres caractères mnémonique en préfixe seront encore traités.
$DT_INTERNAL - Utilise la police système pour calculer les mesures du texte
$DT_LEFT - Aligne le texte à gauche
$DT_MODIFYSTRING - Modifie la chaîne donnée pour correspondre au texte affiché
$DT_NOCLIP - Dessine sans écrêtage
$DT_NOFULLWIDTHCHARBREAK - Empêche un saut de ligne à un DBCS (chaîne à caractère à double largeur), de sorte que la règle de rupture de ligne équivaut à la chaîne SBCS.
Par exemple, ceci peut être utilisé dans des fenêtres coréens, pour plus de lisibilité des étiquettes d'icônes.
Cette valeur n'a aucun effet à moins que $DT_WORDBREAK soit spécifié
$DT_NOPREFIX - Désactive le traitement des caractères de préfixe
$DT_PATH_ELLIPSIS - Pour le texte affiché, remplace les caractères au milieu de la chaîne avec des ellipses pour que le résultat tienne dans le rectangle spécifié.
Si la chaîne contient des caractères barre oblique inverse (\), $DT_PATH_ELLIPSIS empêche autant que possible du texte après la dernière barre oblique inverse.
La chaîne n'est pas modifiée, sauf si le flag $DT_MODIFYSTRING est spécifié
$DT_PREFIXONLY - Dessine seulement un caractère de soulignement (_) à la position du caractère suivant le caractère de préfixe esperluette.
Ne dessine pas d'autres caractères de la chaîne
$DT_RIGHT - Aligne le texte à droite
$DT_RTLREADING - Mise de droite à gauche pour la lecture de texte bidirectionnel
$DT_SINGLELINE - Affiche le texte sur une seule ligne
$DT_TABSTOP - Définit les tabulations. Les bits 15-8 de $iFlags spécifient le nombre de caractères pour chaque onglet
$DT_TOP - Texte justifié en haut (ligne unique seulement)
$DT_VCENTER - Texte centré verticalement (ligne unique seulement)
$DT_WORDBREAK - Mots coupés
$DT_WORD_ELLIPSIS - Tronque un mot qui ne rentre pas dans le rectangle et ajoute des ellipses

Valeur de retour

Succès: Retourne la hauteur du texte
Échec: Retourne 0

Remarques

La fonction DrawText utilise la police choisit du contexte de périphérique, la couleur du texte et la couleur d'arrière-plan pour dessiner le texte.
Sauf si le format $DT_NOCLIP est utilisé, DrawText coupe le texte de sorte qu'il n'apparaît pas en dehors du rectangle spécifié.
Tout formatage est supposé avoir plusieurs lignes sauf si le format $DT_SINGLELINE est spécifié.
Si la police sélectionnée est trop grande, DrawText ne cherche pas à la remplacer par une police plus petite.

Les constantes ci-dessus sont définies dans WindowsConstants.au3

En relation

$tagRECT, _WinAPI_GetBkMode, _WinAPI_SetBkMode

Voir aussi

Consultez DrawText dans la librairie MSDN.

Exemple

#include <FontConstants.au3>
#include <WinAPIGdi.au3>
#include <WinAPIGdiDC.au3>
#include <WinAPIHObj.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>

Global $g_tRECT, $g_hFont, $g_hOldFont, $g_hDC

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

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

$g_hDC = _WinAPI_GetDC(0)
$g_hFont = _WinAPI_CreateFont(50, 0, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, _
        $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
$g_hOldFont = _WinAPI_SelectObject($g_hDC, $g_hFont)

_WinAPI_SetTextColor($g_hDC, 0x0000FF)
_WinAPI_SetBkColor($g_hDC, 0x000000)
; Commentez la ligne suivante pour obtenir un fond noir au lieu d'un transparent
_WinAPI_SetBkMode($g_hDC, $TRANSPARENT)

While $g_tRECT > 0
    _WinAPI_DrawText($g_hDC, "Hello world!", $g_tRECT, $DT_CENTER)
    Sleep(100)
WEnd

Func _Exit()
    _WinAPI_SelectObject($g_hDC, $g_hOldFont)
    _WinAPI_DeleteObject($g_hFont)
    _WinAPI_ReleaseDC(0, $g_hDC)
    _WinAPI_InvalidateRect(0, 0)
    $g_tRECT = 0
EndFunc   ;==>_Exit