<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_richEdit</id>
	<title>Autoit richEdit - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_richEdit"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_richEdit&amp;action=history"/>
	<updated>2026-04-04T03:00:02Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=Autoit_richEdit&amp;diff=169&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: === RichEdit-OLE-Multi 샘플 === https://github.com/DigiDon34/RichEdit-OLE-Multi/tree/master  &lt;source lang=autoit&gt; ;~ Opt(&quot;MustDeclareVars&quot;, 1)  #include &lt;Misc.au3&gt; #include &quot;GuiRichEdit.au3&quot; #include &lt;GuiMENU.au3&gt; #include &lt;GuiEdit.au3&gt; #include &lt;GUIConstantsEx.au3&gt; #include &lt;TreeViewConstants.au3&gt; #include &lt;WindowsConstants.au3&gt; #include &lt;EditConstants.au3&gt;   Global $FileStreamCallBack = DllCallbackRegister(&quot;_EditStreamCallbackFile&quot;, &quot;dword&quot;, &quot;long_ptr;ptr;long;ptr&quot;) Global $...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_richEdit&amp;diff=169&amp;oldid=prev"/>
		<updated>2024-10-04T17:20:54Z</updated>

		<summary type="html">&lt;p&gt;새 문서: === RichEdit-OLE-Multi 샘플 === https://github.com/DigiDon34/RichEdit-OLE-Multi/tree/master  &amp;lt;source lang=autoit&amp;gt; ;~ Opt(&amp;quot;MustDeclareVars&amp;quot;, 1)  #include &amp;lt;Misc.au3&amp;gt; #include &amp;quot;GuiRichEdit.au3&amp;quot; #include &amp;lt;GuiMENU.au3&amp;gt; #include &amp;lt;GuiEdit.au3&amp;gt; #include &amp;lt;GUIConstantsEx.au3&amp;gt; #include &amp;lt;TreeViewConstants.au3&amp;gt; #include &amp;lt;WindowsConstants.au3&amp;gt; #include &amp;lt;EditConstants.au3&amp;gt;   Global $FileStreamCallBack = DllCallbackRegister(&amp;quot;_EditStreamCallbackFile&amp;quot;, &amp;quot;dword&amp;quot;, &amp;quot;long_ptr;ptr;long;ptr&amp;quot;) Global $...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== RichEdit-OLE-Multi 샘플 ===&lt;br /&gt;
https://github.com/DigiDon34/RichEdit-OLE-Multi/tree/master&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=autoit&amp;gt;&lt;br /&gt;
;~ Opt(&amp;quot;MustDeclareVars&amp;quot;, 1)&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Misc.au3&amp;gt;&lt;br /&gt;
#include &amp;quot;GuiRichEdit.au3&amp;quot;&lt;br /&gt;
#include &amp;lt;GuiMENU.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;GuiEdit.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;GUIConstantsEx.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;TreeViewConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WindowsConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;EditConstants.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Global $FileStreamCallBack = DllCallbackRegister(&amp;quot;_EditStreamCallbackFile&amp;quot;, &amp;quot;dword&amp;quot;, &amp;quot;long_ptr;ptr;long;ptr&amp;quot;)&lt;br /&gt;
Global $FileStreamStruct = DllStructCreate($tagEDITSTREAM)&lt;br /&gt;
DllStructSetData($FileStreamStruct, 3, DllCallbackGetPtr($FileStreamCallBack))&lt;br /&gt;
&lt;br /&gt;
Global $FileStreamInCallBack = DllCallbackRegister(&amp;quot;_EditStreamInCallbackFile&amp;quot;, &amp;quot;dword&amp;quot;, &amp;quot;long_ptr;ptr;long;ptr&amp;quot;)&lt;br /&gt;
Global $FileStreamInStruct = DllStructCreate($tagEDITSTREAM)&lt;br /&gt;
DllStructSetData($FileStreamInStruct, 3, DllCallbackGetPtr($FileStreamInCallBack))&lt;br /&gt;
&lt;br /&gt;
Global $EDITSTREAM_RTFVariable&lt;br /&gt;
Global $VariableStreamCallBack = DllCallbackRegister(&amp;quot;_EditStreamCallbackVariable&amp;quot;, &amp;quot;dword&amp;quot;, &amp;quot;long_ptr;ptr;long;ptr&amp;quot;)&lt;br /&gt;
Global $VariableStreamStruct = DllStructCreate($tagEDITSTREAM)&lt;br /&gt;
DllStructSetData($VariableStreamStruct, 3, DllCallbackGetPtr($VariableStreamCallBack))&lt;br /&gt;
&lt;br /&gt;
Global $h_RichEdit, $RichMENU[10]&lt;br /&gt;
&lt;br /&gt;
Global Const $ES_SUNKEN = 16384&lt;br /&gt;
&lt;br /&gt;
_Main()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Func _Main()&lt;br /&gt;
	; OpenFileDialog()&lt;br /&gt;
    Local $msg, $hgui, $button, $bt2, $btFromFile&lt;br /&gt;
    Local $mnuOptions, $mnuBKColor, $mnuResetBKColor&lt;br /&gt;
    Local $bkcolor, $bkcolor_save = 16777215, $lResult&lt;br /&gt;
    Local $btToVariable&lt;br /&gt;
    ; __GCR_Debug(&amp;quot;TEST&amp;quot;)&lt;br /&gt;
    $hgui = GUICreate(&amp;quot;Rich Edit Example&amp;quot;, 500, 550, -1, -1, BitOR($WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP, $WS_SYSMENU, $WS_SIZEBOX))&lt;br /&gt;
	; __GCR_Debug(&amp;quot;$hgui: &amp;quot; &amp;amp; $hgui)&lt;br /&gt;
    GUIRegisterMsg($WM_SIZING, &amp;quot;WM_SIZING&amp;quot;)&lt;br /&gt;
    $h_RichEdit = _GUICtrlRichEdit_Create($hgui, &amp;quot;&amp;quot;, 10, 10, 480, 420, BitOR($ES_WANTRETURN, $WS_HSCROLL, $ES_SUNKEN, $ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))&lt;br /&gt;
;~  GUICtrlSetResizing($h_RichEdit, $GUI_DOCKAUTO)&lt;br /&gt;
; MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;Value of @error is: &amp;quot; &amp;amp; @error &amp;amp; @CRLF)&lt;br /&gt;
; __GCR_Debug(&amp;quot;Value of @error is: &amp;quot; &amp;amp; @error)&lt;br /&gt;
&lt;br /&gt;
; __GCR_Debug(&amp;quot;$h_RichEdit handle: &amp;quot; &amp;amp; $h_RichEdit &amp;amp; &amp;quot; error &amp;quot; &amp;amp; @error)&lt;br /&gt;
    $lResult = _SendMessage($h_RichEdit, $EM_SETEVENTMASK, 0, BitOR($ENM_REQUESTRESIZE, $ENM_LINK, $ENM_DROPFILES, $ENM_KEYEVENTS, $ENM_MOUSEEVENTS))&lt;br /&gt;
    ; __GCR_Debug(&amp;quot;$h_RichEdit handle: &amp;quot; &amp;amp; $h_RichEdit)&lt;br /&gt;
    $lResult = _SendMessage($h_RichEdit, $EM_AUTOURLDETECT, True)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    $button = GUICtrlCreateButton(&amp;quot;Exit&amp;quot;, 100, 460, 100, 25)&lt;br /&gt;
    ; $btToVariable = GUICtrlCreateButton(&amp;quot;MsgBox RTF&amp;quot;, 310, 460, 90, 25)&lt;br /&gt;
    $btFromFile = GUICtrlCreateButton(&amp;quot;ReadFile&amp;quot;, 410, 460, 90, 25)&lt;br /&gt;
    ; $bt2 = GUICtrlCreateButton(&amp;quot;Save to File&amp;quot;, 200, 460, 100, 25)&lt;br /&gt;
    ; GUICtrlSetTip(-1, &amp;quot;The target-File is: &amp;quot; &amp;amp; @WorkingDir &amp;amp; &amp;quot;\AutoIt_testrtf.rtf&amp;quot;)&lt;br /&gt;
    GUISetState(@SW_SHOW)&lt;br /&gt;
    GUIRegisterMsg($WM_NOTIFY, &amp;quot;WM_NOTIFY&amp;quot;)&lt;br /&gt;
    HotKeySet(&amp;quot;{F8}&amp;quot;, &amp;quot;_CharFromPos&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	; _GUICtrlRichEdit_InsertText($h_RichEdit, &amp;#039;Testing&amp;#039; &amp;amp; @CRLF)&lt;br /&gt;
    &lt;br /&gt;
	; Local $RTFFiletest = OpenFileDialog()&lt;br /&gt;
	; MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;File handle: &amp;quot; &amp;amp; $RTFFiletest)&lt;br /&gt;
    ; _GUICtrlRichEdit_SetText($h_RichEdit, &amp;quot;This is a test&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
    ; _GUICtrlRichEdit_AppendText($h_RichEdit, &amp;#039;http://www.autoitscript.com/forum&amp;#039; &amp;amp; @CRLF)&lt;br /&gt;
    ; _GUICtrlRichEdit_SetSel($h_RichEdit, 0, 15)&lt;br /&gt;
    ; _GUICtrlRichEdit_InsertText($h_RichEdit, &amp;quot;Welcome to AutoIt&amp;quot; &amp;amp; @CRLF)&lt;br /&gt;
    ; _GUICtrlRichEdit_AppendText($h_RichEdit, &amp;#039;mailto:yourmail@your.com&amp;#039; &amp;amp; @CRLF)&lt;br /&gt;
    ; _GUICtrlRichEdit_AppendText($h_RichEdit, &amp;#039;{\rtf1{\field{\*\fldinst{ HYPERLINK &amp;quot; http://www.msn.com&amp;quot;}}{\fldrslt{ MSN} }}}&amp;#039;)&lt;br /&gt;
    &lt;br /&gt;
    ; _GUICtrlRichEdit_AppendText($h_RichEdit, _RTF_GetBMPRTF(_FindFirstBMP()) &amp;amp; @CRLF)&lt;br /&gt;
    &lt;br /&gt;
    ; _GUICtrlRichEdit_SetSel($h_RichEdit, 0, 17)&lt;br /&gt;
    ; __GCR_Debug( &amp;quot;new Undo-Limit: &amp;quot; &amp;amp; _GUICtrlRichEdit_SetUndoLimit($h_RichEdit, 100))&lt;br /&gt;
	&lt;br /&gt;
	Local $send = _GUICtrlRichEdit_StreamFromFile($h_RichEdit, @ScriptDir &amp;amp; &amp;quot;\SampleDocument.rtf&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
    $RichMENU[0] = GUICtrlCreateContextMenu(GUICtrlCreateDummy())&lt;br /&gt;
    $RichMENU[1] = GUICtrlCreateMenuItem(&amp;quot;Undo  Ctrl-Z&amp;quot;, $RichMENU[0])&lt;br /&gt;
    $RichMENU[2] = GUICtrlCreateMenuItem(&amp;quot;Redo  Ctrl-Y&amp;quot;, $RichMENU[0])&lt;br /&gt;
    GUICtrlCreateMenuItem(&amp;quot;&amp;quot;, $RichMENU[0])&lt;br /&gt;
    $RichMENU[3] = GUICtrlCreateMenuItem(&amp;quot;Cut   Ctrl-X&amp;quot;, $RichMENU[0])&lt;br /&gt;
    $RichMENU[4] = GUICtrlCreateMenuItem(&amp;quot;Copy  Ctrl-C&amp;quot;, $RichMENU[0])&lt;br /&gt;
    $RichMENU[5] = GUICtrlCreateMenuItem(&amp;quot;Paste Ctrl-V&amp;quot;, $RichMENU[0])&lt;br /&gt;
    &lt;br /&gt;
    While 1&lt;br /&gt;
        $msg = GUIGetMsg()&lt;br /&gt;
&lt;br /&gt;
        Select&lt;br /&gt;
&lt;br /&gt;
            Case $msg = $GUI_EVENT_CLOSE Or $msg = $button ; controls commands don&amp;#039;t work here if using wm_command&lt;br /&gt;
                Exit&lt;br /&gt;
            ; Case $msg = $bt2&lt;br /&gt;
                ; Local $RTFFile = FileOpen(@DesktopDir &amp;amp; &amp;quot;\AutoIt_testrtf.rtf&amp;quot;, 2)&lt;br /&gt;
                ; DllStructSetData($FileStreamStruct, 1, $RTFFile) ; -&amp;gt; Send handle to CallbackFunc&lt;br /&gt;
                ; Local $send = _GUICtrlRichEdit_StreamToFile($h_RichEdit, $SF_RTF, $FileStreamStruct)&lt;br /&gt;
                ; FileClose($RTFFile)&lt;br /&gt;
                ; ConsoleWrite($send &amp;amp; @CRLF)&lt;br /&gt;
            ; Case $msg = $btToVariable&lt;br /&gt;
                ; Global $EDITSTREAM_RTFVariable = &amp;quot;&amp;quot;&lt;br /&gt;
                ; Local $send = _GUICtrlRichEdit_StreamToVar($h_RichEdit, $SF_RTFNOOBJS, $VariableStreamStruct)&lt;br /&gt;
                ; MsgBox(0, &amp;#039;&amp;#039;, $EDITSTREAM_RTFVariable)&lt;br /&gt;
                ; $EDITSTREAM_RTFVariable = &amp;quot;&amp;quot;&lt;br /&gt;
            Case $msg = $btFromFile&lt;br /&gt;
                ; Local $RTFFile = FileOpen(&amp;quot;C:\Users\Jo\Documents\Autohotkey\AutoitRichEdit\SampleDocument.rtf&amp;quot;)&lt;br /&gt;
                ; Local $RTFFile = FileOpen(@WorkingDir &amp;amp; &amp;quot;\SampleDocument.rtf&amp;quot;, 0)&lt;br /&gt;
				; __GCR_Debug(&amp;quot;chosen file: &amp;quot; &amp;amp; @WorkingDir &amp;amp; &amp;quot;\SampleDocument.rtf&amp;quot;)&lt;br /&gt;
				; __GCR_Debug(&amp;quot;chosen file: &amp;quot; &amp;amp; $RTFFile)&lt;br /&gt;
                ; DllStructSetData($FileStreamInStruct, 1, $RTFFile) ; -&amp;gt; Send handle to CallbackFunc&lt;br /&gt;
                ; _GUICtrlRichEdit_SetText($h_RichEdit, &amp;quot;&amp;quot;)&lt;br /&gt;
                ; Local $send = _GUICtrlRichEdit_StreamFromFile($h_RichEdit, $SF_RTF, $FileStreamInStruct)&lt;br /&gt;
                ; Local $send = _GUICtrlRichEdit_StreamFromFile($h_RichEdit, $FileStreamInStruct)&lt;br /&gt;
                Local $send = _GUICtrlRichEdit_StreamFromFile($h_RichEdit, @ScriptDir &amp;amp; &amp;quot;\SampleDocument.rtf&amp;quot;)&lt;br /&gt;
				; MsgBox(0, &amp;quot;&amp;quot;, &amp;quot;Value of @error is: &amp;quot; &amp;amp; @error &amp;amp; @CRLF &amp;amp; &amp;quot;return &amp;quot; &amp;amp; $send)&lt;br /&gt;
                ; FileClose($RTFFile)&lt;br /&gt;
                ConsoleWrite($send &amp;amp; @CRLF)&lt;br /&gt;
            Case $msg = $RichMENU[1]&lt;br /&gt;
                _GUICtrlRichEdit_Undo($h_RichEdit)&lt;br /&gt;
            Case $msg = $RichMENU[2]&lt;br /&gt;
                _GUICtrlRichEdit_Redo($h_RichEdit)&lt;br /&gt;
            Case $msg = $RichMENU[3]&lt;br /&gt;
                _GUICtrlRichEdit_Cut($h_RichEdit)&lt;br /&gt;
            Case $msg = $RichMENU[4]&lt;br /&gt;
                _GUICtrlRichEdit_Copy($h_RichEdit)&lt;br /&gt;
            Case $msg = $RichMENU[5]&lt;br /&gt;
                _GUICtrlRichEdit_Paste($h_RichEdit)&lt;br /&gt;
        EndSelect&lt;br /&gt;
    WEnd&lt;br /&gt;
EndFunc   ;==&amp;gt;_Main&lt;br /&gt;
&lt;br /&gt;
; Function DebugPrint&lt;br /&gt;
; : Outputs debug strings - use DebugView or similar to catch debug messages&lt;br /&gt;
Func __GCR_Debug($debugString)&lt;br /&gt;
	MsgBox(0, &amp;#039;&amp;#039;, $debugString)&lt;br /&gt;
   ; DllCall(&amp;quot;kernel32.dll&amp;quot;, &amp;quot;none&amp;quot;, &amp;quot;OutputDebugString&amp;quot;, &amp;quot;str&amp;quot;, $debugString)&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
; for PopupMenu&lt;br /&gt;
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)&lt;br /&gt;
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR&lt;br /&gt;
&lt;br /&gt;
    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)&lt;br /&gt;
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, &amp;quot;hWndFrom&amp;quot;))&lt;br /&gt;
    $iIDFrom = DllStructGetData($tNMHDR, &amp;quot;IDFrom&amp;quot;)&lt;br /&gt;
    $iCode = DllStructGetData($tNMHDR, &amp;quot;Code&amp;quot;)&lt;br /&gt;
    Switch $hWndFrom&lt;br /&gt;
        Case $h_RichEdit&lt;br /&gt;
            Select&lt;br /&gt;
                Case $iCode = $EN_MSGFILTER&lt;br /&gt;
                    Local $tMsgFilter = DllStructCreate($tagMSGFILTER, $ilParam)&lt;br /&gt;
                    If DllStructGetData($tMsgFilter, 4) = $WM_RBUTTONUP Then ; WM_RBUTTONUP&lt;br /&gt;
                        Local $hMenu = GUICtrlGetHandle($RichMENU[0])&lt;br /&gt;
                        _SetMenuTexts($hWndFrom, $RichMENU)&lt;br /&gt;
                        _GUICtrlMenu_TrackPopupMenu($hMenu, $hWnd)&lt;br /&gt;
                    EndIf&lt;br /&gt;
            EndSelect&lt;br /&gt;
    EndSwitch&lt;br /&gt;
    Return $GUI_RUNDEFMSG&lt;br /&gt;
EndFunc   ;==&amp;gt;WM_NOTIFY&lt;br /&gt;
&lt;br /&gt;
Func WM_SIZING($hWnd, $uMsg, $wParam, $lParam)&lt;br /&gt;
    Local $wh = WinGetClientSize($hWnd)&lt;br /&gt;
    ControlMove($h_RichEdit, &amp;quot;&amp;quot;, &amp;quot;&amp;quot;, Default, Default, $wh[0] - 20, $wh[1] - 130)&lt;br /&gt;
EndFunc   ;==&amp;gt;WM_SIZING&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Prog@ndy&lt;br /&gt;
Func _FindFirstBMP($dir = @WindowsDir)&lt;br /&gt;
    Local $find = FileFindFirstFile($dir &amp;amp; &amp;quot;\*.bmp&amp;quot;)&lt;br /&gt;
    Local $BMPFile = FileFindNextFile($find)&lt;br /&gt;
    FileClose($find)&lt;br /&gt;
    Return $dir &amp;amp; &amp;quot;\&amp;quot; &amp;amp; $BMPFile&lt;br /&gt;
EndFunc   ;==&amp;gt;_FindFirstBMP&lt;br /&gt;
&lt;br /&gt;
;Prog@ndy&lt;br /&gt;
Func _CharFromPos()&lt;br /&gt;
    Local $pos = MouseGetPos()&lt;br /&gt;
    Local $winpos = WinGetPos($h_RichEdit)&lt;br /&gt;
    Local $Char = _GUICtrlRichEdit_GetCharPosFromXY($h_RichEdit, $pos[0] - $winpos[0], $pos[1] - $winpos[1])&lt;br /&gt;
    MsgBox(0, @error, $Char)&lt;br /&gt;
EndFunc   ;==&amp;gt;_CharFromPos&lt;br /&gt;
&lt;br /&gt;
;Prog@ndy&lt;br /&gt;
Func _RTF_GetBMPRTF($BMPFile)&lt;br /&gt;
    If Not (StringRight($BMPFile,4) = &amp;quot;.bmp&amp;quot;) Then Return SetError(1, 0, &amp;quot;&amp;quot;)&lt;br /&gt;
    Local $Data = FileOpen($BMPFile, 16)&lt;br /&gt;
    If FileRead($Data, 2) &amp;lt;&amp;gt; &amp;quot;0x424D&amp;quot; Then Return SetError(1, 0, &amp;quot;&amp;quot;)&lt;br /&gt;
    FileRead($Data, 12)&lt;br /&gt;
    Local $RTF = &amp;#039;{\rtf1{\pict\dibitmap &amp;#039; &amp;amp; Hex(FileRead($Data)) &amp;amp; &amp;#039;}}&amp;#039;&lt;br /&gt;
    FileClose($Data)&lt;br /&gt;
    Return $RTF&lt;br /&gt;
EndFunc   ;==&amp;gt;_RTF_GetBMPRTF&lt;br /&gt;
&lt;br /&gt;
;Prog@ndy, set thze states of the Context-Menu Items :)&lt;br /&gt;
Func _SetMenuTexts($h_RichEdit, $RichMENU)&lt;br /&gt;
    Local $hMenu = GUICtrlGetHandle($RichMENU[0])&lt;br /&gt;
    ; Undo:&lt;br /&gt;
    If _GUICtrlRichEdit_CanUndo($h_RichEdit) Then&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[1], 0, 0)&lt;br /&gt;
        ; _GUICtrlMenu_SetItemText($hMenu, $RichMENU[1], &amp;quot;Undo: &amp;quot; &amp;amp; _GUICtrlRichEdit_UndoID2Text(_GUICtrlRichEdit_GetNextUndo($h_RichEdit)) &amp;amp; &amp;quot;   Ctrl-Z&amp;quot;, 0)&lt;br /&gt;
        _GUICtrlMenu_SetItemText($hMenu, $RichMENU[1], &amp;quot;Undo: &amp;quot; &amp;amp; _GUICtrlRichEdit_GetNextUndo($h_RichEdit) &amp;amp; &amp;quot;   Ctrl-Z&amp;quot;, 0)&lt;br /&gt;
    Else&lt;br /&gt;
        _GUICtrlMenu_SetItemText($hMenu, $RichMENU[1], &amp;quot;Undo&amp;quot; &amp;amp; &amp;quot;   Ctrl-Z&amp;quot;, 0)&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[1], 1, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    ;Redo&lt;br /&gt;
    If _GUICtrlRichEdit_CanRedo($h_RichEdit) Then&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[2], 0, 0)&lt;br /&gt;
        _GUICtrlMenu_SetItemText($hMenu, $RichMENU[2], &amp;quot;Redo: &amp;quot; &amp;amp; _GUICtrlRichEdit_GetNextRedo($h_RichEdit) &amp;amp; &amp;quot;   Ctrl-Y&amp;quot;, 0)&lt;br /&gt;
        ; _GUICtrlMenu_SetItemText($hMenu, $RichMENU[2], &amp;quot;Redo: &amp;quot; &amp;amp; _GUICtrlRichEdit_UndoID2Text(_GUICtrlRichEdit_GetRedoName($h_RichEdit)) &amp;amp; &amp;quot;   Ctrl-Y&amp;quot;, 0)&lt;br /&gt;
    Else&lt;br /&gt;
        _GUICtrlMenu_SetItemText($hMenu, $RichMENU[2], &amp;quot;Redo&amp;quot; &amp;amp; &amp;quot;   Ctrl-Y&amp;quot;, 0)&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[2], 1, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    ; Cut / Copy:&lt;br /&gt;
    Local $sel = _GUICtrlRichEdit_GetSel($h_RichEdit)&lt;br /&gt;
    If UBound($sel) = 3 And $sel[1] &amp;lt;&amp;gt; $sel[2] Then&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[3], 0, 0)&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[4], 0, 0)&lt;br /&gt;
    Else&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[3], 1, 0)&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[4], 1, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
    ;Paste&lt;br /&gt;
    If _GUICtrlRichEdit_CanPaste($h_RichEdit) Then&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[5], 0, 0)&lt;br /&gt;
    Else&lt;br /&gt;
        _GUICtrlMenu_SetItemDisabled($hMenu, $RichMENU[5], 1, 0)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc   ;==&amp;gt;_SetMenuTexts&lt;br /&gt;
;~ DWORD EditStreamCallback(&lt;br /&gt;
;~     DWORD_PTR dwCookie,&lt;br /&gt;
;~     LPBYTE pbBuff,&lt;br /&gt;
;~     LONG cb,&lt;br /&gt;
;~     LONG *pcb&lt;br /&gt;
;~ );&lt;br /&gt;
&lt;br /&gt;
Func _EditStreamCallbackVariable($dwCookie, $pbBuff, $cb, $pcb)&lt;br /&gt;
    Local $pcb_Struct = DllStructCreate(&amp;quot;long&amp;quot;, $pcb)&lt;br /&gt;
;~  If @AutoItUnicode Then&lt;br /&gt;
;~      Local $buufs = DllStructCreate(&amp;quot;wchar[&amp;quot; &amp;amp; $cb &amp;amp; &amp;quot;]&amp;quot;, $pbBuff)&lt;br /&gt;
;~  Else&lt;br /&gt;
    Local $buufs = DllStructCreate(&amp;quot;char[&amp;quot; &amp;amp; $cb &amp;amp; &amp;quot;]&amp;quot;, $pbBuff)&lt;br /&gt;
;~  EndIf&lt;br /&gt;
    $EDITSTREAM_RTFVariable &amp;amp;= DllStructGetData($buufs, 1)&lt;br /&gt;
    DllStructSetData($pcb_Struct, 1, $cb)&lt;br /&gt;
    Return 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_EditStreamCallbackVariable&lt;br /&gt;
Func _EditStreamCallbackFile($dwCookie, $pbBuff, $cb, $pcb)&lt;br /&gt;
    Local $pcb_Struct = DllStructCreate(&amp;quot;long&amp;quot;, $pcb)&lt;br /&gt;
    Local $FileHandle = $dwCookie&lt;br /&gt;
;~  If @AutoItUnicode Then&lt;br /&gt;
;~      Local $buufs = DllStructCreate(&amp;quot;wchar[&amp;quot; &amp;amp; $cb &amp;amp; &amp;quot;]&amp;quot;, $pbBuff)&lt;br /&gt;
;~  Else&lt;br /&gt;
    Local $buufs = DllStructCreate(&amp;quot;char[&amp;quot; &amp;amp; $cb &amp;amp; &amp;quot;]&amp;quot;, $pbBuff)&lt;br /&gt;
;~  EndIf&lt;br /&gt;
    ; Write To File :), could also append to a variable ....&lt;br /&gt;
    FileWrite($FileHandle, DllStructGetData($buufs, 1))&lt;br /&gt;
    DllStructSetData($pcb_Struct, 1, $cb)&lt;br /&gt;
    Return 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_EditStreamCallbackFile&lt;br /&gt;
&lt;br /&gt;
Func _EditStreamInCallbackFile($dwCookie, $pbBuff, $cb, $pcb)&lt;br /&gt;
    Local $pcb_Struct = DllStructCreate(&amp;quot;long&amp;quot;, $pcb)&lt;br /&gt;
    DllStructSetData($pcb_Struct, 1, 0)&lt;br /&gt;
    Local $FileHandle = $dwCookie&lt;br /&gt;
;~  If @AutoItUnicode Then&lt;br /&gt;
;~      Local $buufs = DllStructCreate(&amp;quot;wchar[&amp;quot; &amp;amp; $cb &amp;amp; &amp;quot;]&amp;quot;, $pbBuff)&lt;br /&gt;
;~  Else&lt;br /&gt;
    Local $buufs = DllStructCreate(&amp;quot;char[&amp;quot; &amp;amp; ($cb + 1) &amp;amp; &amp;quot;]&amp;quot;, $pbBuff)&lt;br /&gt;
;~  EndIf&lt;br /&gt;
    Local $read = FileRead($FileHandle, $cb)&lt;br /&gt;
    Local $error = @error&lt;br /&gt;
    If $error &amp;lt;&amp;gt; 0 Then Return 1&lt;br /&gt;
    DllStructSetData($buufs, 1, $read)&lt;br /&gt;
    DllStructSetData($pcb_Struct, 1, StringLen($read))&lt;br /&gt;
    Return 0&lt;br /&gt;
EndFunc   ;==&amp;gt;_EditStreamInCallbackFile&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
[[category:autoit]]&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>