Zum Inhalt springen

CFindReplaceDialog


SwordMaster

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zuerst mal DANKE Klotzkopp für deine Hilfe bei meinen zwei Lieblingsklassen :rolleyes:

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* :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

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" );
Link zu diesem Kommentar
Auf anderen Seiten teilen

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?? )!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...