Wie der Titel schon sagt, will ich einen bestimmten Text in einem RichEdit unlöschbar machen.
Nun komm ich aber nicht weiter.
Ich hab die Hilfe durchforstet, und bin dabei auf diese beiden Funktionen gestoßen:
[autoit]_GUICtrlRichEdit_SetEventMask() & _GUICtrlRichEdit_SetCharAttributes()
[/autoit]
Mit
_GUICtrlRichEdit_SetCharAttributes()
[/autoit]kann man den Text auf Protect stellen.
Jetzt kann man den Text jedoch immernoch löschen.
Mit
[autoit]_GUICtrlRichEdit_SetEventMask()
[/autoit]kann man $ENM_PROTECTED auf das RichEdit-Controle registrieren, welches dann immer, wenn man einen geschützten Text löschen will, eine $EN_PROTECTED Benachrichtigung bekommt.
Nun weiß ich nicht, wie ich die Nachricht abfragen soll, oder was ich tun muss, wenn er die Nachricht bekommt.
Danke schonmal für eure Hilfe.
MfG,
H2112
Edit:
Lösung
#AutoIt3Wrapper_Au3Check_Parameters= -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Global $lblMsg, $hRichEdit, $hGui
[/autoit] [autoit][/autoit] [autoit]Main()
[/autoit] [autoit][/autoit] [autoit]Func Main()
Local $iMsg, $btnNext, $iStep = 0
$hGui = GUICreate("Example (" & StringTrimRight(@ScriptName,4) &")", 320, 350, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 220, _
BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
$lblMsg = GUICtrlCreateLabel("", 10, 235, 300, 60)
$btnNext = GUICtrlCreateButton("Next", 270, 310, 40, 30)
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
[/autoit] [autoit][/autoit] [autoit]_GuiCtrlRichEdit_SetText($hRichEdit, "Paragraph 1 ")
_GuiCtrlRichEdit_SetEventMask($hRichEdit, $ENM_UPDATE)
_GuiCtrlRichEdit_SetEventMask($hRichEdit, $ENM_PROTECTED)
While True
$iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
GUIDelete()
Exit
Case $iMsg = $btnNext
$iStep += 1
Switch $iStep
Case 1
_GuiCtrlRichEdit_SetSel($hRichEdit, 0, 2)
_GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+un")
Report("1. Two characters underlined")
Case 2
_GuiCtrlRichEdit_SetSel($hRichEdit, 1, 5)
;~ _GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+bo")
_GuiCtrlRichEdit_SetCharAttributes($hRichEdit, "+pr")
Report("2. Some characters protect")
Case 3
; Stream all text to the Desktop so you can look at settings in Word
_GuiCtrlRichEdit_Deselect($hRichEdit)
_GuiCtrlRichEdit_StreamToFile($hRichEdit, @DesktopDir & "\gcre.rtf")
GUICtrlSetState($btnNext, $GUI_DISABLE)
EndSwitch
EndSelect
WEnd
EndFunc ;==>Main
Func WM_NOTIFY($hWnd, $iMsg, $iWparam, $iLparam)
#forceref $hWnd, $iMsg, $iWparam
Local $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $iLparam)
$iCode = DllStructGetData($tNMHDR, "Code")
Select
Case $iCode = $EN_PROTECTED
Return 1
EndSelect
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func Report($sMsg)
$sMsg = $sMsg & @CR & @CR & _GUICtrlRichEdit_GetCharAttributes($hRichEdit)
GUICtrlSetData($lblMsg, $sMsg)
ControlFocus($hRichEdit, "", "")
EndFunc ;==>Report