Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249141 (10577)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Undo / Redo
Frank Abbing
| 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
Sven Schmidts
| 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
Frank Abbing
| 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
Uwe ''Pascal'' Niemeier
| 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
Frank Abbing
| 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
Uwe ''Pascal'' Niemeier
| 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
Frank Abbing
| 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
Alexander Schönfeld
| Datum:28.02.02 12:32 (alexander.schoenfeld@chronologic.de) |
Mal als allgemeinen Tip zum Thema API (leider nur online): http://msdn.microsoft.com/library/default.asp?url=/library/en-us/win32/alphafunc_3bjm.asp Mit freundlichem Gruss, A.Schoenfeld
Frank Abbing
| 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
Alexander Schönfeld
| 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 :)

| Zurück zur Übersicht