CRichEditCtrl treibt mich in den Wahnsinn



  • In meinem MFC-Programm erzeuge ich in der View.h mit
    „CRichEditCtrl m_rich; “ ein CRichEditCtrl-Objekt.

    In der Ansicht kommt dann folgendes „Create“
    „m_rich.Create(ES_AUTOVSCROLL | ES_MULTILINE | ES_WANTRETURN | WS_CHILD | WS_VISIBLE | WS_VSCROLL , rect, this, 1);“

    Damit ist das „CRichEditCtrl-Objekt“ erzeugt und bereit.

    Wenn ich nun die linke Maustaste klicke wird folgendes ausgeführt.
    „m_rich.Paste();”

    Damit kann ich allerdings nur Text aus der Zwischenablage in meine Ansicht einfügen.
    Das funktioniert nicht wenn sich Bilder in der Zwischenablage befinden.

    Habe nun folgendes ausprobiert.

    BOOL ja = m_rich.CanPaste(); soll rausfinden ob „CRichEditCtrl“ mit den
    Daten in der Zwischenablage kann
    TRACE("\nCanPaste ja/nein = %i\n\n", ja); Bekomme immer eine 1 für ‚ja’ auch wenn Bilder
    in der Zwischenablage sind. Allerdings bekomme
    ich sie in meiner Ansicht nicht zu sehen. Soll heißen
    sie werden nicht eingefügt.

    Habe nun folgendes gemacht. „m_rich.PasteSpecial(CF_TEXT);”
    Das geht. Kann Text einfügen. Dann habe ich „m_rich.PasteSpecial(CF_BITMAP);” und
    „m_rich.PasteSpecial(CF_DIB);” ausprobiert aber nichts. Es erscheinen keine Bilder in meiner Ansicht.

    Was mache ich falsch oder kann „CRichEditCtrl“ keine Bilder aus der Zwischenablage einfügen.
    Das glaube ich allerdings nicht denn dann gäbe es ja kein CF_BITMAP, CF_TIFF, CF_DIB.

    Weis jemand Rat.



  • Schau mal hier:

    http://www.codeguru.com/cpp/controls/richedit/article.php/c5383/

    das sollte dich deinem Ziel etwas näher bringen 😉

    Müßtest dann nur noch das bild aus dem Clipboard hohlen und einfügen.

    Gruß Matthias



  • Danke dir CTecS für die Antwort.
    Werde mal bei codeguru nachsehen.
    Allerdings ist das "bild aus dem Clipboard hohlen" so ziemkich mein grösstes Problem.
    Wenn ich mit CRichEditView arbeite kann ich Texte und Bilder mit STRG+V
    einfügen. Kriege es aber nicht hin es mit der Maus zu veranlassen.

    Wenn ich mit CRichEditCtrl arbeite kann ich durch einen Mausklick zwar Text einfügen aber eben keine Bilder.

    hal_ibm



  • wie im anderen forum schon gesagt wenn du mit der maustaste Text o. bilder aus der zwischenablage in deine ansicht einfügen willst must du selbst dafür sorgen das du das aus der zwischenablage holst und in die ansicht einfügst.

    man kann nicht STRG+V eben mal schnell in STRG+T oder in nen mausklick wandeln und erwarten das sich das aus der zwischenablage selbst in die ansicht einfügt.



  • Ja aber warum denn nicht? Dem Computer oder windows müsste es doch egal sein von welchem eigabegerät ob Tastatur oder Maus der entsprechende Befehl kommt.
    Der Computer ist doch "Programmierbar". Es sollte doch möglich sein durch einen Mausklick so etwas wie einen Tastaturcode von einer Virtuellen Tastatur zu schicken. Ich klicke auf einen Button und die entsprechende Nachrichetembehandlungsroutine des Buttons sendet eine Nachricht an Windows das diese für STRG+V hält.
    Lasse mich gerne vom gegenteil überzeugen aber dann wüsste ich gerne warum und nicht nur das geht nicht.
    Das es so einfach nicht geht sehe ich ja.

    hal_ibm



  • Ist deine ID für einfügen auch ID_EDIT_PASTE, denn bei mir MSV7 läuft das ohne probleme

    Gruß



  • Hallo CTecS.

    Wenn meine Ansicht von CRichEditView erbt funktioniert das bei mir auch.
    Bei mir ist dann natürlich die ID für einfügen auch ID_EDIT_PASTE.
    Danke für den Tipp.
    Übrigens. Habe mir von Microsoft mal die Queldateien von Wordpad besorgt.
    Die machen es genauso. Auch den ihr popupmenu greift einfach über ID_EDIT_PASTE
    auf die Zwischenablage zu.

    Wenn ich in meiner Anischt allerdings ein CRichEditCtrl-Objekt verwenden will funktioniert das mit den Bildern allerdings nicht. Nur damit wir nicht aneinander vorbei reden (schreiben).

    Danke für den Tip. War sehr wertvoll

    hal_ibm


Anmelden zum Antworten