Textfarbe ändern



  • Hallo!

    Wie ändere ich die Farbe von ausgesuchten Textwörtern?
    Ich habe bereits RichEdit in der InitInstance gestartet. Da ich Neuling bin weiß ich jetzt aber nicht weiter. Am Programm verändert sich nichts durch starten des RichEditors. Ich habe bereits eine Suchfunktion eingebaut mit der ich Wörter aus der Textdatei auslesen kann.
    Also wie kann ich einen ausgesuchten CString farbig ausgeben? Für ein kleines Beispielprogramm wäre ich dankbar.

    Vielen Dank für Eure Hilfe!





  • Danke für den Link.
    Leider konnte ich dort keine Antwort auf meine Frage finden, da ich weder eine Toolbar noch irgendwelche Icons einfärben möchte.

    Für weitere Hilfe wäre ich sehr dankbar!



  • guck doch in der MSDN einfach unter CRichEditCtrl.

    (siehe SetSel() und SetSelectionCharFormat())





  • Danke für den Link.
    Ich habe jetzt das folgende Beispiel für Color bei mir eingebunden:

    // Populate a CHARFORMAT structure accordingly
    CHARFORMAT cf;
    cf.cbSize = sizeof(CHARFORMAT);
    cf.dwMask = CFM_COLOR;
    cf.dwEffects = 0;
    cf.crTextColor = RGB(255, 0, 0);
    
    // Store the current selection
    CHARRANGE crCurrent;
    GetSel(crCurrent);
    
    // The character position of the start of the line:
    long lSelStart = LineIndex(nLineIndex);
    
    // Get the text for the current line
    CString strLineText;
    int nLineLength = LineLength(lSelStart);
    int nRead = GetLine(nLineIndex, strLineText.GetBuffer(nLineLength + 3), 
             nLineLength + 1);
    strLineText.ReleaseBuffer(nRead);
    
    // Get the end point for the selection
    long lSelEnd = lSelStart + strLineText.GetLength();
    
    // Now colour the line
    SetWordCharFormat(cf);
    

    Leider habe ich jede Menge Errors beim Compilieren:

    c:\Dokumente und Einstellungen\Dirk\Eigene Dateien\Visual Studio Projects\w32shell\w32d\w32dDoc.cpp(87): error C2371: 'crCurrent': Neudefinition; unterschiedliche Basistypen
    c:\Dokumente und Einstellungen\Dirk\Eigene Dateien\Visual Studio Projects\w32shell\w32d\w32dDoc.cpp(88): error C3861: 'GetSel': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Dokumente und Einstellungen\Dirk\Eigene Dateien\Visual Studio Projects\w32shell\w32d\w32dDoc.cpp(88): error C3861: 'crCurrent': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Dokumente und Einstellungen\Dirk\Eigene Dateien\Visual Studio Projects\w32shell\w32d\w32dDoc.cpp(91): error C2065: 'nLineIndex': nichtdeklarierter Bezeichner
    c:\Dokumente und Einstellungen\Dirk\Eigene Dateien\Visual Studio Projects\w32shell\w32d\w32dDoc.cpp(91): error C3861: 'LineIndex': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Dokumente und Einstellungen\Dirk\Eigene Dateien\Visual Studio Projects\w32shell\w32d\w32dDoc.cpp(95): error C3861: 'LineLength': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Dokumente und Einstellungen\Dirk\Eigene Dateien\Visual Studio Projects\w32shell\w32d\w32dDoc.cpp(96): error C3861: 'GetLine': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Dokumente und Einstellungen\Dirk\Eigene Dateien\Visual Studio Projects\w32shell\w32d\w32dDoc.cpp(96): error C3861: 'nLineIndex': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    c:\Dokumente und Einstellungen\Dirk\Eigene Dateien\Visual Studio Projects\w32shell\w32d\w32dDoc.cpp(104): error C3861: 'SetWordCharFormat': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
    

    Wie bekomme ich mein Programm zum laufen? 🙂



  • Hilfe,

    ich habe so ein ähnliches Problem 😞 !
    Vielleicht könnte jemand Anfänger00 helfen, dann wäre mir auch geholfen 🙂 .
    Danke schon einmal!



  • richedit.h ist eingebunden?

    #include <richedit.h>
    


  • Ja, RichEdit habe ich am Anfang der Seite eingebunden.



  • Da er GetSel usw nicht kennt, hast du den Code vermutlich in der falschen Klasse platziert. Der muss in einer von CRichEdit abgeleiteten Klasse sein, nicht im Dialog.

    Außerdem scheinst du ein paar Variablendeklariationen vergessen zu haben. Und eine zuviel. 🙄



  • Muß ich da eine RichEditCtrl oder RichEditView Klasse einfügen?
    Danke für Deine Hilfe!



  • Sobald ich versuche eine Klasse RichEdit hinzuzufügen kommt die Fehlermeldung "Objekt erforderlich". ?????????????



  • Theoretisch ist schon so eine Klasse in dem Demoprojekt, was du dir angeschaut hast.
    Die kannst du einfach in den Ordner deines Projektes kopieren und dann hinzufügen.

    Hast du schon eine Controlvariable für das Richedit? Wenn nein, leg sie mal an.
    Dann änderst du den Typ auf den der gerade importierten Klasse.

    Dann kannst du damit genauso umgehen wie im Beispiel.



  • Wie erstelle ich denn so eine CtrlVariable?
    Bin gerade dabei das Projekt einzubinden.



  • Sowas machst du mit dem Klassenassistenten.



  • Ich sehe keine Möglichkeit die Klassendatei zu kopieren, weil man nur die .cpp Dateien kopieren kann.

    Sobald ich versuche eine neue RichEditCtrl Klasse mit dem Klassenassistenten zu erstellen, kommt die Fehlermeldung "Objekt erforderlich".

    Danke!



  • Klar kannst du beide Dateien kopieren... nimm bitte den Windows-Explorer.



  • Meinst Du die beiden Dateien aus dem Source Ordner?Dort befindet sich eine .cpp und .h- Datei. Die soll ich in mein aktuelles Projekt kopieren?

    Vielen Dank, das einem hier so schnell geholfen wird...



  • Das meine ich.
    Und dann dem Projekt hinzufügen (geht in der Dateiansicht).



  • So Chef,

    ich bin Deinen Anweisungen gefolgt und habe jetzt die Datei in der entsprechenden Klasse. Wie erstelle ich jetzt die CTRLDatei? Du sagtest mit dem Klassenassistenten?Wie benénne ich die Datei?


Anmelden zum Antworten