Copy und Paste im Dialogfenster???
-
Hallo.
Ich habe in meinem MFC-Programm ein Dialogfenster in dem es ein Eingabefeld gibt.
Wenn mein Programm läuft und das Dialogfenster erscheint kann ich mit der rechten Maustaste in das Eingabefeld des Dialogfensters klicken und aus dem erscheinenden Kontextmenü „Einfügen“ wählen. Dann erscheint der Text den ich vorher mit copy in die Zwischenablage gelegt habe.Wenn ich aber ein Bild mit copy in die Zwischenablage gelegt habe und dann in meinem Dialogfenster mit der rechten Maustaste in das Eingabefeld klicke erscheint das Kontextmenü aber „Einfügen“ ist grau unterlegt und lässt sich nicht auswählen.
Wie kann ich ein Bild mittels „Kopieren und Einfügen“ in mein Dialogfenster bekommen? Ich will das ich Text und Bilder einfügen kann.
Übrigens ich habe mal in mein Dialogfenster ein Rich Edit Element eingefügt.
Wenn ich dann mein Programm starte lässt sich das Dialogfenster erst gar nicht öffnen. Beim kompilieren gibt es aber keine Fehlermeldungen.cebion
-
Hi Cebion,
Füge doch das „Rich Edit Element“ mit der rechten Maustaste ein.
1. Klick mit der rechten Maustaste auf Dein Dialogfeld, damit sich das Kontextmenü öffnet
2. Wähle aus diesem Menü „ActiveX-Steuerelement einfügen“.
3. Danach öffnet sich ein Fenster aus dem Du den Eintrag „Microsoft RichTextbox Control 6.0 (SP6) auswählst. Wobei die SP6 von dem Service Pack abhängt, bei Dir könnte eine andere Zahl stehen.
4. Danach gleichst Du das Steuerelement an, um das Kontextmenü für das RichText zu aktivieren, klickst Du auf das Steuerelement mit der echten Maustaste und dann auf „Eigenschaften“ und wählst die letzte Registrierkarte „Alles“ aus und setzt den Wert „AutoVerbMenu“ auf True, damit das Kontextmenü aktiv ist und man die Bilder und Texte aus der Zwischenablage einfügen kann.Nun starte die Anwendung.
Gruß Doug_HH
-
Wenn Du die Msdn richtig gelesen hättest, würde dein Richedit auch laufen
Important If you are using a rich edit control in a dialog box (regardless whether your application is SDI, MDI, or dialog-based), you must call AfxInitRichEdit once before the dialog box is displayed. A typical place to call this function is in your program’s InitInstance member function. You do not need to call it for each time you display the dialog box, only the first time. You do not have to call AfxInitRichEdit if you are working with CRichEditView.
also Schreib in deiner InitInstance AfxInitRichEdit() und das wird gehen
und zu deinem zweiten Prob:
Das Edit element bearbeitet TEXT keine bilder, wenn Du Bilder in das Clipboard einfügst, wird CEdit die nie und nimmer anzeigen. Was auch? Wenn Du Bilder aus dem Clipboard anzeigen willst, mußt du das mit dem einfügen selbst übernehmen, und eventuell in einem CSTatic oder so das Bild darstellen, welches im clipboard liegt.Schau mal in der MSDN nach Open OpenClipboard() darunter wirst du dann den rest finden
gruß
-
Spricht da etwas dagegen es so zu machen wie es Doug_HH es vorgeschlagen hat?
Habe nämlich das gleich vor!
Hab beides ausprobiert und das von Doug_HH funktioniert ohne Probleme.
Spricht etwas dagegen OCX/ActiveX im Projekt zu verwenden??
Wäre klasse wenn mir jemand die Frage beantwortet.
Das was ich noch weiß, ist das man das OCX mit seiner Anwendung mitgeben muß, aber das sollte ja nicht das Problem sein. Oder?Gruß Stuffy
-
Ich würde den OCX Wrapper nicht verwenden. Hast Du den COM initialisiert?
Evtl. hilft auch dieser Artikel:
http://www.codeproject.com/richedit/COleRichEditCtrl.aspEvtl. auch ein anderer der Artikel hier:
http://www.codeproject.com/richedit/
-
Warum net? Was kann da Schief gehen? Oder gehört das nicht zum guten Ton ein OCX einzubauen. Und was meinst Du mit COM initialisiert?
Sorry bin neu hier.
-
Hallo CTecS.
Ich habe "AfxInitRichEdit()" in meine "InitInstance" aufgenommen. Kann nun
das Programm starten und das Dialogfenster mit dem Rich Edit Element erscheint auch.
Aber.
In dem Rich Edit Element funktioniert das kontext menue nicht.
Ich kann aber über "strg" + "v" ein paste ausführen und text einfügen.
Bilder gehen aber weiterhin nicht.
Mache ich was falsch?cebion
-
Da ich denke, das es andere besser beschreiben können, gibt es einen Link für dich wo du hoffendlich alle fragen um RichEdit beantwortet bekommst
http://www.codeproject.com/richedit/
Wenn dann immer noch Fragen sind, dann her damit, vielleicht kann ich dir dann noch weiterhelfen (oder jemand anderes)

Gruß
-
Stuffy schrieb:
Warum net? Was kann da Schief gehen? Oder gehört das nicht zum guten Ton ein OCX einzubauen. Und was meinst Du mit COM initialisiert?
Sorry bin neu hier.
Warum soll man zwischenschichten verwenden, die Speicher fressen, wenn es direkt mit einem Window geht.
COM Init CoInitialize bzw. AfxOleInit muss initialisiert werden werden die OLE Funktionen des Clipboards verwendet werden sollen.
-
Hallo Doug_HH.
Ich kann das "Microsoft Rich Textbox Control" auf dem Weg den du beschrieben hast leider nicht finden.
Ich wähle "ActiveX-Steuerelement einfügen" aber in dem entstehenden Fenster gibt es zwar eine Menge ActiveX sachen aber kein "Microsoft Rich Textbox Control".Muss ich das nachinstallieren?
Ich benutze Visual C++ 6.0.cebion