#include <GDIP.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $iARGBBackground, $hGraphics, $aFontFamilies

_Example()

Func _Example()
	Local $hGUI, $hFontCollection

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

	$hGUI = GUICreate("Создаёт коллекцию шрифтов", 400, 200)
	GUISetState()

	; Создаёт графический объект из дескриптора окна
	$hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)

	; Создаёт объект InstalledFontCollection, содержащий поддерживаемые системой шрифты
	$hFontCollection = _GDIPlus_FontCollectionCreate()

	; Получает все шрифты
	$aFontFamilies = _GDIPlus_FontCollectionGetFamilyList($hFontCollection)

	; Получает цвет фона стандартного диалогового окна
	$iARGBBackground = BitOR(0xFF000000, _WinAPI_GetSysColor($COLOR_BTNFACE))

	; Теперь рисует 3 строки используя случайный шрифт каждые 2 секунды
	_PrintFonts()
	AdlibRegister("_PrintFonts", 2000)

	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE

	AdlibUnRegister("_PrintFonts")

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

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

Func _PrintFonts()
	Local $iI, $iIndex, $iMaxIndex, $hFontFamily, $sFamilyName

	If IsArray($aFontFamilies) Then
		$iMaxIndex = $aFontFamilies[0]
		_GDIPlus_GraphicsClear($hGraphics, $iARGBBackground)

		For $iI = 1 To 3
			$iIndex = Random(1, $iMaxIndex, 1)

			; Получает случайный объект шрифта из коллекции
			$hFontFamily = $aFontFamilies[$iIndex]
			; Получает имя шрифта
			$sFamilyName = _GDIPlus_FontFamilyGetFamilyName($hFontFamily)
			; Рисует имя шрифта, используя свой шрифт
			_GDIPlus_GraphicsDrawString($hGraphics, $sFamilyName, 20, $iI*40, $sFamilyName, 15)
		Next
	EndIf
EndFunc