window 10,10-300,350 usermessages 16,40'--WM_CLOSE=Beenden declare b1%,b2%,b3%,b4%,b5% declare t1%,t2%,t3%,t4% declare dll&,rtf&,a$,a% a$="UNKNOWN*TYPING*DELETE*DRAGDROP*CUT*PASTE" b1%=create("button",%hwnd,"Undo",20,20,60,24) b2%=create("button",%hwnd,"Redo",20,50,60,24) t1%=create("text",%hwnd,"",100,22,10,20) t2%=create("text",%hwnd,"",100,52,10,20) t3%=create("text",%hwnd,"",120,22,100,20) t4%=create("text",%hwnd,"",120,52,100,20) b3%=create("button",%hwnd,"Cut",20,260,60,24) b4%=create("button",%hwnd,"Copy",100,260,60,24) b5%=create("button",%hwnd,"Paste",180,260,60,24) dll&=usedll("riched20.dll") rtf&=control("RichEdit20A","Test",$54001044,20,100,200,150,%hwnd,1234,%hinstance,$200) '---nur nötig,wenn einzelne Texteingaben rückgängig gemacht werden sollen: sendmessage(rtf&,1093,0,$10000)'--EM_SETEVENTMASK => ENM_KEYEVENTS while 1 '---nur nötig,wenn einzelne Texteingaben rückgängig gemacht werden sollen: if %wmnotify and (%notifycode=1792)'--EN_MSGFILTER > Taste gedrückt sendmessage(rtf&,1024+88,0,0)'-----EM_STOPGROUPTYPING endif if getfocus(b1%) sendmessage(rtf&,199,0,0)'------EM_UNDO elseif getfocus(b2%) sendmessage(rtf&,1024+84,0,0)'--EM_REDO elseif getfocus(b3%) sendmessage(rtf&,768,0,0)'------WM_CUT elseif getfocus(b4%) sendmessage(rtf&,769,0,0)'------WM_COPY elseif getfocus(b5%) sendmessage(rtf&,770,0,0)'------WM_PASTE endif a%=sendmessage(rtf&,198,0,0)'------EM_CANUNDO settext t1%,str$(a%) a%=sendmessage(rtf&,1024+85,0,0)'--EM_CANREDO settext t2%,str$(a%) a%=sendmessage(rtf&,1024+86,0,0)'--EM_GETUNDONAME settext t3%,substr$(a$,a%+1,"*") a%=sendmessage(rtf&,1024+87,0,0)'--EM_GETREDONAME settext t4%,substr$(a$,a%+1,"*") setfocus(rtf&) case %umessage=16:break waitinput endwhile destroywindow(rtf&) freedll dll&