*Gelöst* #EM_UNDO/#WM_UNDO

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

*Gelöst* #EM_UNDO/#WM_UNDO

Beitrag von Mok »

Hallo.
Da ich momentan an einem Texteditor arbeite (skriva = schwedisch für "Schreiben") ist eine Rückgängig-Funktion (aka. Undo) mehr als notwendeig. Dank RSBasics WinAPI Lib habe ich auch eine Lösung dazu gefunden: SendMessage_(GadgetID(#Editor_0),#EM_UNDO,0,0). Da tut sich schon die erste Frage auf: Neben #EM_UNDO gibt's auch #WM_UNDO. Ich konnte keinen Unterschied feststellen, aber gibt es intern irgend einen Unterschied?
Wenn ich jetzt ein EditorGadget habe, da ein paar Zeilen reischreib (mit Zeilenumbruch) und dann die Undo-Funktion ausführe, kann ich alles bis zum Zeilenumbruch rückgängig machen. Z. B. für

Code: Alles auswählen

foo
bar
baz
kann ich nur baz rückgängig machen, wenn ich den Text oben eintippe und danach mit Strg-V "zah" direkt ans "baz" einfüge, kann ich zah und baz rückgängig machen, also wird die Undo-Liste nach jedem Zeilenumbruch zurückgesetzt. Was ein Dreck!
Abschließend wollte ich noch fragen, wie man prüfen kann, ob die Undo- und Redo-Liste leer ist (z. B. um einen entsprechenden Button auszugrauen)

Grüße, Mok.
Zuletzt geändert von Mok am 10.07.2010 14:24, insgesamt 1-mal geändert.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: #EM_UNDO/#WM_UNDO

Beitrag von RSBasic »

@Mok
http://blogs.msdn.com/b/oldnewthing/arc ... 57870.aspx
Also kein Unterschied afaik.

Wenn du die Rückgängig-Funktion gerne so haben möchtest, dass es nicht zeilenweise, sondern dass jedes einzelne Zeichen rückgängig gemacht werden soll, brauchst du andere APIs für den Buffer von Undo: http://www.purebasic.fr/english/viewtopic.php?p=161517
Mit Hilfe des Codes von freak kannst du dir eine eigene Prozedur schreiben, womit du dann jedes einzelne Zeichen rückgängig machen kannst.
Hoffe, ich hab dich richtig verstanden.

Anleitung:
1. Du schreibst zuerst ein Buchstabe.
2. Danach drückst du auf Suspend und anschließend auf Resume.
3. Danach kannst du wieder ein Buchstabe schreiben.
Und irgendwann kannst du dann mit Undo alle geschriebene Zeichen rückgängig machen.

\\Edit:
Hm, vll. hab ich dich doch falsch verstanden, kA, vll. hilft dieser Code von freak^^
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: #EM_UNDO/#WM_UNDO

Beitrag von Mok »

Ok, alle Probleme dank halbem Neuanfang gelöst.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Antworten