Function Reference

_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 (2バイト文字文字列)での改行をやめ、改行規則をSBCS文字列と同じにします。
  例えば、韓国語版WIndowsではアイコンラベルの信頼性が向上します。
  この値は$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ライブラリでDrawTextを検索して下さい。

 


#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