ste color statictext



  • hallo
    habe ein problem
    wie kann ich einem static text eine farbe zuweisen
    bin anfänger wäre schön es
    :o ausführlich zu beschreiben
    danke!



  • Hallo.

    Ungefähr so:

    HBRUSH CDeineKlasse::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
        // TODO: Attribute des Gerätekontexts hier ändern
    
        if(nCtlColor == CTLCOLOR_STATIC   )
        {
             if (pWnd->GetDlgCtrlID () == IDC_STATIC)
             {
                 pDC->SetTextColor(RGB(0,0,255));
    
             }
            return hbr;
        }
    
        // TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
        return hbr;
    }
    

    Cu
    Oli



  • Hi,

    ich hab da ein ähnliches Problem. Allerdings will ich den Hintergrund eines Radiobuttons, d.h. da wo der Text steht in einer anderen Farbe darstellen.
    Dafür hab ich in der if-Abfrage auf CTLCOLOR_BTN geändert, aber das funzt trotzdem nicht. Die Radiobuttons werden übrigens dynamisch erzeugt.

    Hat dafür jemand ne Lösung ich hab schon die Suchfunktion bemüht, aber leider nix gefunden.

    THX
    Manuela



  • hallo ole
    wie rufe ich die methode OnCtlColor
    auf
    kann ich auch einzelne staticfelder ändern



  • Hallo ela.

    Ich habe mir mal ein Demo-Projekt aus dem Internet runtergeladen, wo der Hintergrund von Eingabefeldern geändert wird.

    Da ist es nicht so wei bei der OnCtlColor-Funktion, wo sich bloß der Hintergrund ändert, wo was steht.

    Bin leider noch nicht dazugekommen, das Projekt mal anzuschauen.

    Müßtest allerdings für Radio-Button umschreiben.

    Wenn ich es Dir mal schicken soll, kannst Du dich bei mir melden.
    zschaege_o@zahoransky.de

    Cu
    Oli



  • Hallo wisky70

    OnCtlColor ist eine Windows-Nachricht und kannst/mußt Du über den Klassenassisten Deiner kallse einfügen

    Unterscheiden der einzelnen Static-Felder könnte so gehen.

    if(nCtlColor == CTLCOLOR_STATIC  )
    {
      if (pWnd->GetDlgCtrlID () == IDC_STATIC1)
      {
         pDC->SetTextColor(RGB(255,255,255));
         pDC->SetBkColor(RGB(0,0,255));
      }
      return hbr;
    }
    // TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
        return hbr;
    

    Hoffe ich konnte Dir weiter helfen.

    Cu
    Oli



  • Hallo Leute,

    ich habe auch gerade mit der selbe Problem zu kämpfen, ich habe den ersten teil schon geschaft. Ich kann ein Staticfeld farbig datstellen. Wie kann ich aber bei
    bestimmte Ereignisse diese Funktion nochmal aufrufen und ihn andere Farben zuweisen.



  • hi
    genau das ist auch meine frage
    wie rufe ich OnCtlColor mehrmals auf
    😡



  • OnCtlColor wird nicht von dir aufgerufen.
    Das Childwindow schickt diese Nachricht wenn es sich zeichnet.

    Du musst z.B. eine Membervariable anlegen in der die Farbe notiert ist.

    Wenn du keine Membervariable nehmen willst dann entscheidest du in OnCtlColor welche Farbe genommen werden soll.

    Um das ChildWindow neu zu zeichnen: RedrawWindow

    /E:
    Bei www.codeguru.com gibt es fertige "Color-Static, Color-Edit" Klassen bei denen du einfach über eine Methode die Farben setzen kannst.

    Um so was selber zu basten mal in der MSDN unter "message reflection" schauen.

    [ Dieser Beitrag wurde am 21.01.2003 um 17:30 Uhr von Nemesyzz editiert. ]



  • wisky70: Zuviel gesoffen oder warum die roten Köpfe? 😉 :o


Anmelden zum Antworten