Autor | Thema: Undo / Redo | | Datum:25.02.02 14:55 
(frankabbing@12move.de) | |
Hallo,
ich möchte in einem Richedit-Control eine erweiterte Undo / Redo Funktion einbauen. Die vorhandenen Messages hierfür (EM_Undo, EM_Redo) reichen mir nicht aus, es sollen viele Eingaben wieder rückgängig gemacht werden können.
Hierzu muß ich wissen:
1) Welches Zeichen (ASCI-Code) wurde als letztes im Control eingetragen und an welcher Position
2) Wie man das zuletzt eingegebene Zeichen wieder entfernt
Oder hat jemand schon eine erweiterte Undo / Redo Funktion entworfen.
Mit den Richedit Messages ist ja wohl nur eine 0815 Undo ( Redo Funktion möglich, oder ?
Gruß und Dank,
Frank
|
| | Datum:25.02.02 20:17 
(schmidts@flat2serv.de) | |
Wenn ich mich recht erinnere, dann funktioniert das nur durch das Steuer-Programm, da die API vom MultiEdit geerbt ist und "nur" ein wenig bereichert wurde. Programme wie z.B. das PRF-Pad halten im Hintergrund alle Änderungen fest, um diese dann Stück-für-Stück (von hinten nach vorn) rückgängig zu machen. Ich müsste mich schon schwer täuschen, wenn dies doch möglich sein sollte. Ev. hilft es, wenn Du die Messages (KEY_DOWN, UP etc.) anfängst, dazu musst Du aber eine eigene Message-Verwaltung einbauen.
Mfg.
Sven Schmidts
|
| | Datum:25.02.02 20:28 
| |
Hallo.
"Programme wie z.B. das PRF-Pad halten im Hintergrund alle Änderungen fest, um diese dann Stück-für-Stück (von hinten nach vorn) rückgängig zu machen."
Das hab' ich ja ebenfalls vor.
Ich benötige aber den ASCI Code der zuletzt gedrückten Taste.
Den Scancode habe ich, der wird mir schon automatisch gemeldet. Aber Scancode nach ASCI Code, wie soll das gehen?
Gruß, Frank
|
| | Datum:26.02.02 18:38 
(Pascalxd@owl-online.de) | |
Hallo Frank!
Mit einem RTF-Control der Version 2 hat man standartmässig 100 Undo/Redo-Schritte zur
Verfügung (erweiterbar) und kann per Message ermitteln, welche Art von Aktion als
nächstes mit den jeweiligen Funktionen rückgängig gemacht werden kann. Auch einzeln
getippte Buchstaben können für Undo/Redo registriert werden.
Voraussetzung ist die Richedit20.dll (Nachfolger von Richedit32.dll). Die gehörte
bei Win95 nicht zum Standart, wird aber bereits mit Word 7 installiert und müsste
in neueren Win-Versionen schon enthalten sein.
Interessiert?
SeeYou
Pascal
|
| | Datum:26.02.02 20:08 
(frankabbing@12move.de) | |
Hallo,
RichEd20.dll = 426496 Bytes
RichEd32.dll = 3584 Bytes
Da greift wohl die Riched32 auf die Riched20 zu, oder?
Klar bin ich interessiert (sabber!)
Her mit den Infos ;-) ... wenn du welche hast ? 8-/
Gruß, Frank
|
| | Datum:27.02.02 21:27 
(Pascalxd@owl-online.de) | |
Hallo Frank!
Das mit den dll's passt schon so!
Die Richedit32.dll war die erste und entspricht RTF Version 1.0. Danach kam die 20'er
(=Version 2.0) und unter NT müsste es schon eine Richedit30.dll geben (hab' ich gelesen)
Mit Version 2 hatte ich auch noch nicht viel zu tun; aus Kompatiblitätsgründen
habe ich immer Version 1 als kleinsten gemeinsamen Nenner aller Win-BS verwendet.
Für die Undo/Redo-Sache habe ich mal 'ne kleine Demo gebastelt:
http://www.tomcatsoft.de/RTF2-Undo-Demo.prf
BTW: Vor einiger Zeit erschien von PC-Magazin das Sonderheft Nr.21 (C++ und Java). Darin
enthalten waren aktuelle MSDN-API-Infos als chm-Dateien (Englisch) und C++-Header, aus
denen man die Werte der Konstanten raussuchen kann. Vielleicht gibts das Heft noch
irgendwo.
Und: Man muß nicht VC++ installieren, um daranzukommen. Die Sachen liegen auch einzeln auf
der CD. Hab' ich allerdings erst hinterher gemerkt :-{
HTH
Pascal
|
| | Datum:27.02.02 22:23 
(frankabbing@12move.de) | |
Hallo Pascal,
hab's soeben selbst hinbekommen. Wenn ich Richedit20 benutze, hab ich ja automatisch ein Multi-Level Undo / Redo !!
Mein Pech war nur, das ich bei jedem Return
"SendMessage(richedit&,194,0,addr(Return$)) 'EM_ReplaceSel" gesendet hab', dummerweise war Parameter 3 fCanUndo, und steht der auf Null, wird der Undopuffer wohl gelöscht. Jetzt hab' ich ihn auf TRUE gesetzt und tatatataaa, es funktioniert !!!
C++ Header brauch' ich nicht, hab' jede Menge aktueller Assembler Header, aber leider nur die alte Win32PR.
Deinen Quellcode werde ich mir aber auf jeden Fall ansehen.
Danke nochmals.
Gruß, Frank
|
| | | Datum:28.02.02 16:41 
(frankabbing@12move.de) | |
Hallo,
klar kenne ich den Link.
Hat eigentlich schon mal jemand die MSDN CD bestellt? Sind da alle API-Beschreibungen mit dabei?
Gruß, Frank
|
| | Datum: 28.02.02 16:55 
(alexander.schoenfeld@chronologic.de) | |
Also ich hab mal die msdn Library - July 1999 als DVD hier, und die hat schon einiges drauf, leider ist das ganze in diesem HTML-Hilfeformat aufgebaut...
Die brauchst du übrigens nicht unbedingt zu bestellen, denn teilweise verschenkt microsoft die auch auf diversen computer/elektronikmessen. Da hab ich meine nämlich auch her :)
|
|
|