Fenster Farben zuweisen?



  • Hi Leudde!
    Die Nervensäge ist mal wieder da! Der blöde Petzold erklärt mal wieder alles so dolle, das man mal wieder im Forum nachfragen muss *buchindieeckewerf*.
    Wie kann man eigentlich Fenstern, also Fenstern, Buttons, Labels, Listboxes, Editfelder etc. eigene Farben zuweisen? Ist das überhaupt möglich? Also z.B. der eine Button ist blau mit weisser Textfarbe, der andere grün mit roter Textfarbe ... ????

    Wie geht das 😕 ? Mit SetBkColor ja wohl kaum.

    Gruss, code_pilot



  • Selberzeichen oder einfache Dinge 8wie andere Farben) gehen auch mit dem WM_CTLCOLOR...-Nachrichten. Einfach mal im MSDN darüber informieren.

    [ Dieser Beitrag wurde am 04.11.2002 um 22:42 Uhr von Luckie editiert. ]



  • Thx, aber könnte mir jemand denn mal ein Beispiel geben??? Wie kann ich z.B. die Backgroundcolor des Buttons Button1 auf Blau setzen??? Ich kapier dat mit diesem Gerätekontext da einfach nicht, den man bei WM_CTLCOLORBTN braucht...

    Besten Dank!

    code_pilot :p



  • Also eine relativ einfache Methode ist die: sich das Fensterhandle zu nehmen (Bei Button und anderen Controls mit "GetDlgItem") und dann mit SetClassLong und dem Index GCL_HBRBACKGROUND einfach eine Brush für den Hintergrund zu übergeben.
    Also bei mir hat das jedenfalls funktioniert.

    Viel Spass

    HoWeR 😉



  • Hallo!
    Wie geht das denn???

    Sowas wie

    SetClassLong(IB_OK, GCL_HBRBACKGROUND, GetStockObject(WHITE_BRUSH));
    

    geht nämlich nicht 😞

    Kann man denn auch irgendwie RGB-Farben setzen????

    Hilf mir!!!

    code_pilot 🙄



  • SetClassLong verändert die Fensterklasse (also alle Buttons, oder?)!

    SetClassLong ( GetDlgItem(hDlg,MAKEINTRESOURCE(IDOK)), GCL_HBRBACKGROUND, GetStockObject(WHITE_BRUSH) );
    

    Hab das jetzt so hingeschrieben (nicht ausprobiert) - weiß also nicht ob's stimmt! Einfach ausprobieren 🙂



  • Hallo Code_pilot,

    das mit der ID des Controls (auch Buttons) funktioniert natürlich nicht.
    Probiers mal so:

    HWND hControl

    hControl = GetDlgItem (hWnd, ID_CONTROL); // hWnd ist ein Handle auf das Parent des Controls
    SetClassLong(hWnd, GCL_HBRBACKGROUND, GetStockObject(WHITE_BRUSH));

    Sollte eigentlich so funktionieren

    Viel Spass

    HoWeR 😉



  • 😮

    P.S. den MAKEINTRESOURCE im GetDlgItem hab ich natürlich vergessen.

    Viel Spass

    HoWeR 😉



  • Thx werds testen 🙂



  • Bei SetClassLong musst du dann aber schon auch hControl einsetzen, dazu ermittelst du es ja vorher!



  • Also ich würde das eher mit WM_CTL... machen.
    Wie das geht steht hier.



  • flenders hat Recht: kleiner Fehler meinerseits und sollte die Farbe dann noch nicht angezeigt werden, liegt es daran, dass noch nicht aktualisiert wurde.
    Das geschieht nämlich nicht automatisch.
    Also InvalidateRect (wenn möglich) oder (meistens wenn du controls nimmst) SetWindowPos verwenden.

    Viel Spass

    HoWeR 😉


Anmelden zum Antworten