SwordMaster Geschrieben 11. Oktober 2002 Teilen Geschrieben 11. Oktober 2002 CFindReplaceDialog *Finde = new CFindReplaceDialog(); Finde->Create(TRUE, "", NULL, FR_DOWN, this); beschäftige mich gerade mit einem Programm wo man CFindReplaceDialog benutz.... habe jedoch noch nicht herausgefunden was der Parameter FR_Down beinhaltet... bzw... was man an dieser Stelle überhaupt für eine Info übergiebt... und den letzten Parameter hab ich auch noch nciht verstanden.... was machen die letzten beiden Parameter (FR_DOWN, this) ??:confused: :confused: hoffe mir kann jemand helfen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. Oktober 2002 Teilen Geschrieben 12. Oktober 2002 Der vierte Parameter sind Flags. FR_DOWN bedeutet, dass "Abwärts" als Suchrichtung vorgegeben ist. Die möglichen Flags sind hier erklärt: http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/CommonDialogBoxLibrary/CommonDialogBoxReference/CommonDialogBoxStructures/FINDREPLACE.asp Der fünfte Parameter bezeichnet das Fenster, dass die FINDMSGSTRING-Nachrichten erhalten soll, die der Suchdialog generiert. Wenn man hier NULL angibt, bekommt das Hauptfenster der Applikation die Nachrichten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SwordMaster Geschrieben 14. Oktober 2002 Autor Teilen Geschrieben 14. Oktober 2002 Zuerst mal DANKE Klotzkopp für deine Hilfe bei meinen zwei Lieblingsklassen Hab jetzt nur noch eine grundlegende Frage zu CFindReplaceDialog! Ich kann ihm jetzt gereits sagen, nach was er suchen soll, und durch was er es ersetzten soll! aber wo kann ich angeben, in welcher Variable überhaupt mein Text ist?? z.b. Text: "C++ ist super" (angenommen in CString Text gespeichert) Suchbegriff: "C++" Ersetzen durch: "Java" wie kann ich der klasse sagen dass sie die CString Variable Text bearbeiten soll?????? *NULL PEIL* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 14. Oktober 2002 Teilen Geschrieben 14. Oktober 2002 CFindReplaceDialog wird verwendet, damit der Benutzer festlegt, was durch was ersetzt werden soll. Du kannst zwar Vorgaben machen, an die muss sich der Benutzer aber nicht halten. CFindReplaceDialog selbst sucht und ersetzt gar nichts, sondern lässt Dich über die Nachrichten wissen, was der Benutzer gerne hätte. Auf diese Nachrichten musst Du dann reagieren, d.h. den Code für das Suchen und Ersetzen musst Du selbst schreiben. Original geschrieben von SwordMaster Text: "C++ ist super" (angenommen in CString Text gespeichert) Suchbegriff: "C++" Ersetzen durch: "Java"Wenn es Dir nur darum geht: Hier reicht auch Text.Replace( "C++", "Java" ); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SwordMaster Geschrieben 14. Oktober 2002 Autor Teilen Geschrieben 14. Oktober 2002 jaja dieses Projekt wird immer lustiger *irnoie* leider MUß ich das CFindReplaceDialog benutzen wenn ich einen text ersetze (muß eben diese klasse vorstellen, und da kann ich nicht einfach auf die CString Klasse zugreifen ( ) naja jedenfalls ist mein problem weiterhin.... CFindReplaceDialog Projekt // mein eigentliches Objekt CString Text // den text den ich bearbeiten will wie kann ich die Textvariable in das objekt aufnehmen?? z.b. ist m_fr.lpstrFindWhat was ich suchen muß... giebt es auch eine Variable in der Klasse wo der Text den ich bearbeiten will steht? Dass ich die Suchen und Ersetzen funktionen selber ausprogrammieren muß, hab ich schon gehört (... aber ich muß doch dann in der funktion Projekt::OnErsetzen auch den text haben den ich bearbeiten will (oder?? )! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 15. Oktober 2002 Teilen Geschrieben 15. Oktober 2002 Original geschrieben von SwordMaster wie kann ich die Textvariable in das objekt aufnehmen?? ... giebt es auch eine Variable in der Klasse wo der Text den ich bearbeiten will steht? ... aber ich muß doch dann in der funktion Projekt::OnErsetzen auch den text haben den ich bearbeiten will (oder?? )! Den Text, in dem gesucht und ersetzt werden soll, musst Du woanders vorhalten, darum kümmert sich der Dialog nicht. Die übliche Anwendung sieht so aus, dass Du eine Document/View-Struktur hast, wobei die Dokumentklasse den Inhalt (=Text) in irgendeiner Form vorhält. Das kann eine CString-Membervariable sein, aber auch ein RTF-Steuerelement oder was ganz anderes. Es muss ja nicht mal Text sein. Daher kann sich CFindReplaceDialog auch nicht darum kümmern, dass der Inhalt übermittelt wird. Nur Du kannst wissen, wie auf Find/Replace-Nachrichten reagiert werden soll. Wenn Du also innerhalb von Projekt::OnErsetzen den Text verändern willst, dann muss der CString ein Member von Projekt sein. Ich würde in OnErsetzen so vorgehen: [*]Falls der Benutzer ersetzen will, und die aktuelle Markierung dem Suchstring entspricht, diese Stelle ersetzen. [*]Von der Markierung ausgehend das nächste Auftreten des Suchstrings finden (abhängig von der vorgegebenen Suchrichtung). [*]Falls das Ende (bzw. der Anfang) des Textes errreicht wurde, ohne dass der Suchstring gefunden wurde, Meldung ausgeben. [*]Ansonsten die Fundstelle markieren. [/list=1] Das deckt jetzt noch nicht FR_REPLACEALL, FR_MATCHCASE und FR_WHOLEWORD ab. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.