Hintergrundfarbe hinter dem Text



  • Hi @all,

    ich habe die Hintergrundfarbe meines Programms geändert.
    Dafür nutze ich ne Membervariable m_Brush die in OnInitDialog gesetzt wird.
    m_Brush.CreateSolidBrush(0x00D8E9EC);
    Die Farbe wird in der WM_CTRCOLOR Funktion zurückgegeben.

    HBRUSH CHauptDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
          pDC->SetBkMode(TRANSPARENT); 
    	return m_Brush;
    }
    

    Das färbt auch den ganzen Hintergrund. Jedoch
    1. Nicht den Hintergrund der Button
    2. Nich die MessageBox

    Weiß einer, wie ich das bewerkstelligen kann?



  • Für Buttons:
    Eine Klasse von CButton ableiten und WM_PAINT überschreiben,
    bzw. die WM_ERASEBKGROUND des Buttons.

    Sollte gehen, kann allerdings die Vermutung nicht bestätigen da nicht z.H

    Bei MessageBoxes weis ich es nicht.
    Evt. solltest du eine eigene Box erstellen und diese mit DoModal benutzen.



  • Ähh,
    ich glaube WM_ERASEBKGROUND is nur bei Views.
    Aber es sollte eine OnCtlColor im CButton-Objekt geben,
    die überschreibar ist...

    vielleicht...... 😃



  • Aloha,

    für Farben oder Bilder im Hintergrund bei Buttons nimm die fertigen Klassen von codeguru.com.

    Du mußt das Rad nicht neu erfinden.

    Bei den Messageboxen, ist die Variante von Beowulf absolut zu empfehlen. Mach Dir Deine eigenen.
    Ansonsten tippe ich kann man den Hintergrund bei Messageboxen über die Systemfarben ändern. <-- reine Vermutung

    Grüße

    BOA



  • Erstmal danke für die Tip´s.

    Werde mir meine MessageBox dann wohl selber schreiben.
    Jedoch

    BOA schrieb:

    Ansonsten tippe ich kann man den Hintergrund bei Messageboxen über die Systemfarben ändern. <-- reine Vermutung

    Wie kann man den die Systemfarben ändern?



  • Aloha,

    Ändern der Systemfarben

    SetSysColors()
    

    Abfrage mit

    GetSysColor()
    

    MSDN für die Parameter... 🙂

    Grüße

    BOA



  • Hab mir grade die Parameter für GetSysColor und SetSysColors angesehen.
    Ändert man damit wirklich alle Einstellungen des Systems (natürlich immer nur auf den einzelnen Parameter bezogen)?
    Wäre vieleicht etwas arrogant, das System des Users zu verstellen, nur weil ich ne andere Farbe für ne Messegebox möchte. 😉



  • Aloha,

    yup, alle schön in rosa für den User. Sieht gut aus. 🙂

    Grüße

    BOA


Anmelden zum Antworten