; Authenticity
; http://www.autoitscript.com/forum/index.php?showtopic=106021
#include <FontConstants.au3>
#include <GDIP.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI_for_GDIP.au3>

Global Const $DTT_TEXTCOLOR = 0x00000001
Global Const $DTT_GLOWSIZE = 0x00000800
Global Const $DTT_COMPOSITED = 0x00002000

; Структура $tagDTTOPTS - указывает различные опции используемые в _WinAPI_DrawThemeTextEx
Global Const $tagDTTOPTS = _
		"uint Size;uint Flags;uint clrText;uint clrBorder;uint clrShadow;int TextShadowType;" & $tagPOINT & _
		";int BorderSize;int FontPropId;int ColorPropId;int StateId;int ApplyOverlay;int GlowSize;ptr DrawTextCallback;int lParam;"

_Example()

Func _Example()
	Local $hGUI, $hGraphics, $hDC, $hCDC, $hTheme
	Local $hBitmap, $hDIBBmp, $hOldBmp, $hFont, $hOldFont
	Local $pBitmapData, $tBmpInfo, $tDTTOptions, $pDTTOptions, $tClientRect, $pClientRect

	; Инициализирует библиотеку GDI+
	_GDIPlus_Startup()

	; Создаёт GUI (нажмите ESC для выхода)
	$hGUI = GUICreate("", @DesktopWidth, @DesktopHeight)
	GUISetState()

	; Открывает данные темы и связанный с ним класс.
	$hTheme = _WinAPI_OpenThemeData($hGUI, "globals")

	; Создаёт графический объект из дескриптора окна
	$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)
	$hDC = _GDIPlus_GraphicsGetDC($hGraphics)
	$hCDC = _WinAPI_CreateCompatibleDC($hDC)
	$tClientRect = _WinAPI_GetClientRect($hGUI)
	$pClientRect = DllStructGetPtr($tClientRect)

	$tBmpInfo = DllStructCreate($tagBITMAPINFO)
	DllStructSetData($tBmpInfo, "Size", DllStructGetSize($tBmpInfo) - 4)
	DllStructSetData($tBmpInfo, "Width", @DesktopWidth)
	DllStructSetData($tBmpInfo, "Height", -@DesktopHeight)
	DllStructSetData($tBmpInfo, "Planes", 1)
	DllStructSetData($tBmpInfo, "BitCount", 32)
	DllStructSetData($tBmpInfo, "Compression", 0) ; BI_RGB

	; Создаёт DIB объект and select assign to the memory device context
	$hDIBBmp = _WinAPI_CreateDIBSection($hDC, $tBmpInfo, $pBitmapData)
	$hFont = _WinAPI_CreateFont(50, 30, 0, 0, 400, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Courier New')

	$hOldBmp = _WinAPI_SelectObject($hCDC, $hDIBBmp) ; Выбирает объект DIBBMP после рисования текста
	$hOldFont = _WinAPI_SelectObject($hCDC, $hFont) ; Выбирает объект шрифта

	$tDTTOptions = DllStructCreate($tagDTTOPTS)
	DllStructSetData($tDTTOptions, "Size", DllStructGetSize($tDTTOptions))
	DllStructSetData($tDTTOptions, "Flags", BitOR($DTT_GLOWSIZE, $DTT_TEXTCOLOR, $DTT_COMPOSITED)) ; поля GlowSize и ClrText валидны
	DllStructSetData($tDTTOptions, "GlowSize", 25)
	DllStructSetData($tDTTOptions, "clrText", _RGBtoBGR($GDIP_CHOCOLATE))
	$pDTTOptions = DllStructGetPtr($tDTTOptions)

	_WinAPI_DrawThemeTextEx($hTheme, $hCDC, 0, 0, "AutoIt GDI+", BitOR($DT_SINGLELINE, $DT_CENTER, $DT_VCENTER, $DT_NOPREFIX), $pClientRect, $pDTTOptions)

	; Освобождает графический dc для рисования
	_WinAPI_SelectObject($hCDC, $hOldFont)
	_WinAPI_SelectObject($hCDC, $hOldBmp)
	_WinAPI_DeleteObject($hFont)
	_WinAPI_DeleteDC($hCDC)
	_GDIPlus_GraphicsReleaseDC($hGraphics, $hDC)

	$hBitmap = _GDIPlus_BitmapCreateFromGdiDib($tBmpInfo, $pBitmapData)
	_GDIPlus_GraphicsDrawImage($hGraphics, $hBitmap, 0, 0)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE

	; Освобождает ресурсы
	_GDIPlus_ImageDispose($hBitmap)
	_GDIPlus_GraphicsDispose($hGraphics)
	_WinAPI_DeleteObject($hDIBBmp)

	_WinAPI_CloseThemeData($hTheme)

	; Закрывает библиотеку GDI+
	_GDIPlus_Shutdown()
EndFunc   ;==>_Example

Func _RGBtoBGR($iRGB)
	Return Dec(StringMid(Binary($iRGB), 3, 6))
EndFunc   ;==>_RGBtoBGR