Textfarbe.



  • Hi, erst mal.
    Also ich möchte gerne einen Text einer "Edit Box"
    rot machen.
    Ich habe schon sehr viele posts über dieses Thema hier gefunden,
    aber irgendwie haben sie mir alle nicht weitergeholfen am schluss
    bekomme ich dann immer 1 oder mehrere Fehler.
    Vieleicht könnte ja mal irgendjemand hier mal richtig sagen wie man
    so einen Text farbig macht und nicht das wieder alles so zerhackt ist das jeder einen satz dazu sagt und am schluss begreift es wieder niemand 🙂

    Ich währe euch sehr dankbar wenn jemand hier nochmal das Thema zusammenfassen
    würde so das es auch beim 1. mal durchlesen und ausführen alles ohne "Fehler" funktioniert .



  • Nunja, das sind prinzipiell 4 Zeilen Code, wovon Dir auch noch 3 von Visual C++ über den Assistenten abgenommen werden. Wo ist das Problem, OnCtlColor zu überschreiben, abzufragen, ob die ID Deinem Edit-Feld entspricht und dass mit SetTextColor die Farbe auf rot zu setzen?



  • Das frage ich mich auch aber bla bla bla is not a bla bla bla of Cstring



  • @Drake: Dann schick doch einfach mal dein "Häppchen" Code der OnCtlColor(...)-Methode...
    Aber hier noch mal ne kurze Zusammenfassung der notwendigen Vorgehensweise:

    HBRUSH CAboutDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {
        /*
        ** No need to do this!
        **
        ** HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
        */
    
        /*
        ** Return the white brush.
        */
        int ctrlID;
        if(nCtlColor==CTLCOLOR_STATIC) {
            ctrlID=pWnd->GetDlgCtrlID();
    
            if(ctrlID==IDC_STATIC_HEADER ) { 
                pDC->SetTextColor(RGB(0,0,255));
                    pDC->SetBkColor(RGB(255,255,0));     
            }
    
        return hbr ;
    }
    


  • AHHH
    Es funktioiert, aber kann ich jetzt vieleicht die farbe noch z.B.
    wenn ich auf einen button klicke ändern also z.B

    GetDlgItem(IDC_STATIC)->SetTextColor(RGB(0,200,0));
    das geht leider nicht aber kann man das irgendwie hinbekommen?
    Und nochmal danke @shadow ich hatte immer viel zu viel rein gepackt und das hat
    dann fehler gemacht 🙂



  • @Drake: Keine Ursache 😉
    Helfen beruht immer auf Gegenseitigkeit!

    Hmm, die Schriftfarbe während der Laufzeit ändern 😕
    Ich denke das würde gehen wenn du die Farbwerte variabel gestaltest.
    Ein Beispiel:

    ....
        COLORREF Farbe[] = { RGB(0, 0, 255), RGB(0, 255, 0), RGB(255, 0, 0) };
        int current_selected = -1;
        enum FARBE {blau = 0, gruen, rot};
    ...
        int ctrlID;
        if(nCtlColor==CTLCOLOR_STATIC) {
            ctrlID=pWnd->GetDlgCtrlID();
    
            if(ctrlID==IDC_STATIC_HEADER ) { 
                switch(current_selected) {
                    case blau:
                        pDC->SetTextColor(Farbe[blau]);
                        break;
                    case gruen:
                        pDC->SetTextColor(Farbe[gruen]);
                        break;
                    case rot:
                        pDC->SetTextColor(Farbe[rot]);
                        break;
                    default:
                        pDC->SetTextColor(RGB(0, 0, 0));
                        break;
                }
                pDC->SetBkColor(RGB(255,255,0));     
            }
    

    Wobei du dann current_selected beim drücken deines Buttons auf den entsprechenden Wert setzen könntest. Weiß nicht, ob es das ist was du meinst, aber es ist das einzige was mir gerade einfällt.

    Viel Erfolg noch 😃

    [ Dieser Beitrag wurde am 14.10.2002 um 22:46 Uhr von shadow editiert. ]


Anmelden zum Antworten