Richedit Control - Text einfärben



  • Hallo,

    ich habe ein Richedit Control erstellt und teste damit ein wenig rum...

    void addText(string text)
    {
        char* buffer;
        CHARFORMAT cf;
        memset(&cf, 0, sizeof(CHARFORMAT));      //  Initialize structure
    
        int textlength = text.length();
        int charcount = GetWindowTextLength(hTextField);
    
        buffer = new char[charcount+1+textlength];
        strncpy(buffer,"",charcount+1+textlength);
    
        GetWindowText(hTextField,buffer,charcount+1);
        strcat(buffer,text.c_str());
        SetWindowText(hTextField,buffer);
    
        if(strText.substr(0,1)=="1") {
            DWORD dwTextColor = RGB(0,147,0);           
            cf.cbSize = sizeof(CHARFORMAT);
            cf.dwEffects &= ~CFE_AUTOCOLOR;
            cf.dwMask = CFM_COLOR;
            cf.crTextColor = dwTextColor;
            cf.yHeight = 32;
            strcpy( cf.szFaceName, "Courier");
        }
        else if(strText.substr(0,1)=="2") {
            DWORD dwTextColor = RGB(0,0,0);         
            cf.cbSize = sizeof(CHARFORMAT);
            cf.dwEffects &= ~CFE_AUTOCOLOR;
            cf.dwMask = CFM_COLOR;
            cf.crTextColor = dwTextColor;
            cf.yHeight = 32;
            strcpy(cf.szFaceName, "Courier");
        }
    
     SendMessage(hTextField, EM_SETSEL, (WPARAM)charcount, (LPARAM)charcount+textlength);
    
    SendMessage(hTextField, EM_SETCHARFORMAT, (WPARAM)SCF_SELECTION, (LPARAM)&cf);
    
    int linecount=SendMessage(hTextField,EM_GETLINECOUNT,0,0);
    for(int i=0;i<linecount;i++) {
        SendMessage(hTextField,EM_SCROLL,SB_LINEDOWN,0);
    }
    
    delete buffer;
    }
    

    immer wenn ich nun einen Satz schreibe der mit "1" Anfängt, sollte der Satz grün sein.. wenn ich einen mit "2" Anfange sollte er schwarz sein...

    das Problem ist, wenn ich eintippe:

    1Hallo wie gehts
    2das ist ein test
    2ein weiterer

    dann ist alles grün außer der letze Satz "2ein weiterer" ... was mache ich da falsch????

    danke für jede Hilfe!

    [ Dieser Beitrag wurde am 15.11.2002 um 20:30 Uhr von personenkult editiert. ]



  • Erzähl mal, was die folgende Zeile soll:

    strncpy(buffer,"",charcount+1+textlength);
    

    Ich denke, Unfug^3 trifft als grobe Beschreibung zu!



  • Du meinst wohl Unfug³? Oder ist das das selbe? 😕 😕 😕



  • Wir wollen ja nun hier mal nich kleinlich sein 😉



  • such mal im "Neuigkeiten aus... " nach dem Thread "Frage Antwort Terror"..

    ich habe nicht geschrieben "Mach mir mal den großen Programmierer" sondern "wie geht das"..

    ps: die Lösung habe ich schon.
    WM_REPLACETEXT???

    trotzdem Danke für diesen sinnigen Post..

    [ Dieser Beitrag wurde am 16.11.2002 um 15:16 Uhr von personenkult editiert. ]



  • besser sinnig als innig



  • das zum Thema "Menschen mit Hirn"
    ironie gib acht..



  • Das zum Thema: "Menschen ohne Humor" 🙄 😞



  • ha ha <- Humor

    [ Dieser Beitrag wurde am 16.11.2002 um 16:10 Uhr von personenkult editiert. ]



  • ohne Kommentar 😃 😃 😃
    Ich wollte keinen Humor aufzwingen. :p


Anmelden zum Antworten