Hintergrundfarbe und Textfarbe eines Textfeldes ändern



  • Hallo!
    Mein - eigentlich ganz triviales - Problem ist folgendes:
    Ich würde gerne von verschiedenen Textfeldern die Hintergrundfarbe sowie die Textfarbe ändern. Verschiedene Artikel udn uach die FAQ habe ich bereits zu dem Thema durchgelesen, und gerade deswegen kann ich nicht verstehen wieso folgender Code nicht richtig funktioniert:

    HBRUSH Spielfeld::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
        if (pWnd->GetDlgCtrlID()==IDC_SPIELINFO){
            pDC->SetTextColor(RGB(0,0,100));
                    pDC->SetBkColor(RGB(255,255,255));
            CBrush pinsel;
            pinsel.CreateSolidBrush(RGB(255,255,255));
            hbr=(HBRUSH)pinsel;
        }
    
        return hbr;
    }
    

    Das Ergebnis dieser Prozedur ist, dass sich zwar der Text in blau einfärbt, aber jeweils nur der Hintergrund der Textbox in dem sich auch Text befindet in weiß, der Rest (dort wo sich noch kein Text befindet) bleibt die Standardfarbe.

    Wie kann ich dieses Problem beheben?
    Laut "Visual C++ 6.0" von "Hans-Jürgen Scheibl" müsste eben jenes Problem durch den Zusatz:

    CBrush pinsel;
    pinsel.CreateSolidBrush(RGB(255,255,255));
    hbr=(HBRUSH)pinsel;
    

    behoben werden, was aber bei mir nicht der Fall ist.

    Wer kann mir helfen?

    Dankesehr,
    Felix



  • Warum nimmst du nicht ganz einfach

    HBRUSH Spielfeld::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
        static HBRUSH hPinsel = CreateSolidBrush( RGB(255, 255, 255) );
    
        if(pWnd->GetDlgCtrlID() == IDC_SPIELINFO)
           pDC->SetTextColor(RGB(0,0,100));
    
        return hPinsel;
    }
    


  • und gerade deswegen kann ich nicht verstehen wieso folgender Code nicht richtig funktioniert

    Nunja, man sollte schon die Grundlagen der C++-Programmierung verstanden haben !

    {
       CBrush pinsel;
       pinsel.CreateSolidBrush(RGB(255,255,255));  // Brush wird erstellt
       hbr=(HBRUSH)pinsel;
    }  // !!! BRUSH WIRD BEI VERLASSEN DES BLOCKS GELÖSCHT !!!
    
    // Fehlerbehebung
    {
       CBrush pinsel;
       pinsel.CreateSolidBrush(RGB(255,255,255));
       hbr=pinsel.Detach();
    }
    

Anmelden zum Antworten