#include <GuiRichEdit.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
OnAutoItExitRegister('_OnExit') ; Освобождает ресурсы RichEdit даже при завершении скрипта с ошибкой

$hGui = GUICreate(StringTrimRight(@ScriptName, 4), 380, 220, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGui, "Попробуйте изменять текст, сохранять в файл и открывать из файла", _
		10, 10, 360, 170, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
$iButtonSave = GUICtrlCreateButton("Сохранить как ...", 40, 185, 140, 30)
$iButtonOpen = GUICtrlCreateButton("Открыть", 200, 185, 140, 30)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $iButtonSave
			$SaveFile = FileSaveDialog('Сохранить как ...', @DesktopDir, 'Файл RTF (*.rtf)', 24, 'gcre', $hGui)
			If @error Then ContinueLoop
			If StringRight($SaveFile, 4) <> '.rtf' Then $SaveFile &= '.rtf'
			; Сохраняет в файл
			_GUICtrlRichEdit_StreamToFile($hRichEdit, $SaveFile)
		Case $iButtonOpen
			$OpenFile = FileOpenDialog('Открыть', @DesktopDir, 'Файл RTF (*.rtf)', '', 'gcre', $hGui)
			If @error Then ContinueLoop
			; Открывает из файла
			_GUICtrlRichEdit_StreamFromFile($hRichEdit, $OpenFile)
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd

Func _OnExit()
	; Для версий ниже 3.3.8.0 обязательно удаление RichEdit или GUI для освобождения ресурсов RichEdit
	_GUICtrlRichEdit_Destroy($hRichEdit)
	GUIDelete()
EndFunc