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.


Anmelden zum Antworten