#include <GUIConstantsEx.au3>
#include <GuiRichEdit.au3>
#include <WindowsConstants.au3>
Global $hGui, $hRichEdit, $iColor = 0x0000FF00
$hGui = GUICreate(StringTrimRight(@ScriptName, StringLen('.exe')), 200, 50, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGui, 'Это какой-то текст.', 10, 10, 180, 22, $ES_AUTOHSCROLL)
_SendMessage($hRichEdit, $EM_SETEVENTMASK, 0, $ENM_SELCHANGE)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NOTIFY, '_WM_NOTIFY')
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($hRichEdit)
ExitLoop
EndSwitch
WEnd
Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
Local $hWndFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
$iCode = DllStructGetData($tNMHDR, 'Code')
Switch $hWndFrom
Case $hRichEdit
If $iCode = $EN_SELCHANGE Then
_GUICtrlRichEdit_SetCharDefaultColor($hRichEdit)
_GUICtrlRichEdit_SetCharBkColor($hRichEdit, $iColor)
Return
EndIf
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>_WM_NOTIFY
Func _GUICtrlRichEdit_SetCharDefaultColor($hWnd)
Local $tCharFormat = DllStructCreate($tagCHARFORMAT2)
DllStructSetData($tCharFormat, 'cbSize', DllStructGetSize($tCharFormat))
DllStructSetData($tCharFormat, 'dwMask', $CFM_BACKCOLOR)
DllStructSetData($tCharFormat, 'crBackColor', _GUICtrlRichEdit_GetBkColor($hWnd))
Return _SendMessage($hWnd, $EM_SETCHARFORMAT, $SCF_ALL, $tCharFormat, 0, "wparam", "struct*") <> 0
EndFunc ;==>_GUICtrlRichEdit_SetCharColor