Text aus Zwischenablage kopieren



  • Hallo!

    Ich versuche schon seit einiger Zeit erfolglos Text aus der Zwischenablage in eine RichTextBox zu kopieren. Leider habe ich zu C++ noch nichts im Internet gefunden und die Hilfe äußert sich auch eher zu anderen Sprachen.

    Im Grunde geht es wohl darum den Text aus dem DataObject zu bekommen. Weiß aber nichtmal, ob ich das DatObject überhaupt richtig "befülle".

    Hier mein Code:

    DataObject *clipboard=new DataObject();
    clipboard->SetData(DataFormats::Text,Clipboard::GetDataObject());
    this->richTextBoxText->Text=clipboard->GetData(DataFormats::Text)->ToString();
    

    Kann mir jemand dabei helfen!?



  • Warum verwendest Du nicht einfach das Beispiel in der Doku???
    http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwindowsformsclipboardclassgetdataobjecttopic.asp

    IDataObject* iData = Clipboard::GetDataObject();
    // Determines whether the data is in a format you can use.
    if(iData->GetDataPresent(DataFormats::Text)) {
      // Yes it is, so display it in a text box.
      this->richTextBoxText->Text = dynamic_cast<String*>(iData->GetData(DataFormats::Text)); 
    }
    


  • Das Beispiel hatte ich schonmal versucht zu verwenden, aber es kommt folgende Fehlermeldung:

    *error C2440: 'Initialisierung': 'System::Windows::Forms::IDataObject __gc *' kann nicht in 'IDataObject ' konvertiert werden

    Mir scheint es, als ob schon bei meiner Objektübergabe etwas schief geht.



  • Wenn Du "windows.h" ikludierst, musst Du den kompletten Namen für "IDataObject" angeben, da es den gleichen Namen noch in den windows-headern gibt...
    Also:

    System::Windows::Forms::IDataObject* iData = Clipboard::GetDataObject();
    // Determines whether the data is in a format you can use.
    if(iData->GetDataPresent(DataFormats::Text)) {
      // Yes it is, so display it in a text box.
      this->richTextBoxText->Text = dynamic_cast<String*>(iData->GetData(DataFormats::Text));
    }
    


  • Jetzt funktioniert's. Wäre ich alleine nie drauf gekommen.
    Vielen Dank. 🙂


Log in to reply