Textformatierungen aus Zwischenablage ermitteln (war: Unicode Zeichen ...)
-
Hallo,
Danke dir erstmal Jansen für deinen Tipp. Es funktioniert.Trotzdem hätte ich da noch eine Frage:
Wie kann man den in die Zwischenablage kopierten Font auslesen.Erklärung: Ich möchte den Font, mit welchem der Text in der Zwischablage formatiert ist auslesen.
Kann mir da vielleicht erneut einen Tipp geben
DANKE
Edit:
Aus diesem Thread abgetrennt.
-
Hier findest du ein Beispiel, wie man Text einschliesslich der RTF-Anweisungen aus der Zwischenablage auslesen kann. Das Ergebnis musst du dann selbst auf die gewünschte Eigenschaft hin parsen.
-
Hallo Jansen,
wenn ich jetzt aber GlobalLock(...) nach TFont parse, erhalte ich immer eine Exeption.Meine Zeilen sehen so aus:
Clipboard()->Open(); try { Word wFormatRTF = RegisterClipboardFormat(CF_RTF); if( Clipboard()->HasFormat(wFormatRTF) ) { HANDLE hData = (HANDLE) Clipboard()->GetAsHandle(wFormatRTF); TFont *Test = (TFont*) GlobalLock(hData); ZwAblage->Canvas->Font->Name = Test->Name; //Test->Name gibt es nicht try { int Test; } __finally { GlobalUnlock(hData); } } } __finally { Clipboard()->Close(); }
Mache ich da villeicht einen Fehler ?
-
So funktioniert das nicht, das wäre ja zu einfach.
Du musst dir den Text aus der Zwischenablage als String zurückgeben lassen, wie im "Hier"-Beispiel gezeigt. Diesen String, der neben den Nutzdaten auch die RTF-Steuerzeichen enthält, musst du dann mit den üblichen Methoden der Stringmanipuation parsen. D.h. die gewünschte Textstelle finden und die zugehörige Font-Definition auslesen.
Lass dir den String mal ausgeben, dann siehst du, was ich meine. Es dürfte auch nichts schaden, sich bei www.wotsit.org o.ä. mit den RTF-Interna vertraut zu machen.