# Function Reference

# _GUICtrlRichEdit_SetCharAttributes

Turns an attribute on or off for selected text or, if none selected, for text inserted at the insertion point

#include <GuiRichEdit.au3>
_GUICtrlRichEdit_SetCharAttributes ( $hWnd, $sStatesAndEffects [, $bWord = False] )

## Parameters

$hWnd | Handle to the control
$sStatesAndEffects | a string consisting of three character groups: + (or -) for the state, and a two-letter abbreviation for the attribute first character: + for on, - for off second and third character: any of: bo - bold di - disable - displays characters with a shadow [nd] em - emboss [nd] hi - hide, i.e. don't display im - imprint [nd] it - italcize li - send EN_LINK messages when mouse is over text with this attribute ou - outline [nd] pr - send EN_PROTECT when user attempts to modify re - mark as revised [nd] sh - shadow [nd] sm - small capital letters [nd] st - strike out sb - subscript [nd] sp - superscript [nd] un - underline
$bWord | [optional] True If text is selected, apply the attribute to whole words in the selected text If not: If the insertion point is in a word, or at the end of it, apply the attribute to the word If not, apply the attribute to text inserted at the insertion point False (Default) If text is selected, apply the attribute to the selected text If not, apply the attribute to text inserted at the insertion point

## Return Value

Success: | True.
Failure: | False and sets the @error flag to non-zero.
@error: | 101 - $hWnd is not a handle 103 - $bWord must be True or False 1021 - length of $sStatesAndAtts is not multiple of 3 1022 - first character of group not + or -. The character is in @extended 1023 - An abbreviation for an attribute is invalid. It is in @extended

## Remarks

Some attributes do not display; they are marked with [nd] above.

## Related

_GUICtrlRichEdit_GetCharAttributes

## See Also

Search EM_SETCHARFORMAT in MSDN Library.

## Example

    #include <GUIConstantsEx.au3>
    #include <GuiRichEdit.au3>
    #include <WindowsStylesConstants.au3>

    Global $g_idLbl_Msg, $g_hRichEdit

    Example()

    Func Example()
        Local $hGui = GUICreate("RichEdit Get/Set CharAttributes", 320, 350, -1, -1)
        $g_hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _
                BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
        $g_idLbl_Msg = GUICtrlCreateLabel("", 10, 235, 300, 60)
        Local $idBtn_Next = GUICtrlCreateButton("Next", 270, 310, 40, 30)
        GUISetState(@SW_SHOW)

        _GUICtrlRichEdit_SetText($g_hRichEdit, "Paragraph 1 ")
        Local $iMsg, $iStep = 0
        While True
            $iMsg = GUIGetMsg()
            Select
                Case $iMsg = $GUI_EVENT_CLOSE
                    _GUICtrlRichEdit_Destroy($g_hRichEdit) ; needed unless script crashes
                    ; GUIDelete()   ; is OK too
                    Exit
                Case $iMsg = $idBtn_Next
                    $iStep += 1
                    Switch $iStep
                        Case 1
                            _GUICtrlRichEdit_SetSel($g_hRichEdit, 0, 2)
                            _GUICtrlRichEdit_SetCharAttributes($g_hRichEdit, "+un")
                            Report("1. Two characters underlined")
                        Case 2
                            _GUICtrlRichEdit_SetSel($g_hRichEdit, 1, 5)
                            _GUICtrlRichEdit_SetCharAttributes($g_hRichEdit, "+bo")
                            Report("2. Some characters bolded")
                        Case 3
                            ; Stream all text to the Desktop so you can look at settings in Word
                            _GUICtrlRichEdit_Deselect($g_hRichEdit)
                            _GUICtrlRichEdit_StreamToFile($g_hRichEdit, @DesktopDir & "\gcre.rtf")
                            GUICtrlSetState($idBtn_Next, $GUI_DISABLE)
                    EndSwitch
            EndSelect
        WEnd
    EndFunc   ;==>Example

    Func Report($sMsg)
        $sMsg = $sMsg & @CRLF & @CRLF & _GUICtrlRichEdit_GetCharAttributes($g_hRichEdit)
        GUICtrlSetData($g_idLbl_Msg, $sMsg)
    EndFunc   ;==>Report