Button-Farbe ändern

Nabi

Erfahrenes Mitglied
HI,
Ich versuche ein Button ein farbe zu geben (Hintergrundfarbe) durch SendMessege aber es funktioniert nicht

SendMessage(hStart , SetBkColor(hDC,RGB(0,255,0)) , 0 , 0 ); // Nichts geändert

Button:
Code:
    hStart = CreateWindowEx (
            NULL,
            "BUTTON",
            "Start",
            WS_VISIBLE |BS_PUSHLIKE|BS_VCENTER|WS_CHILD|BS_TEXT ,
            900,0,80,30,
            hWnd,
            (HMENU)ID_START,
            GetModuleHandle(NULL),
            NULL
            );
 
Zuletzt bearbeitet:
Nabi hat gesagt.:
SendMessage(hStart , SetBkColor(hDC,RGB(0,255,0)) , 0 , 0 ); // Nichts geändert

Wie bitte sollte das Funktionieren?

Der 2. Parameter von SendMessage ist die Nachricht an das Fenster. SetBkColor gibt keine Nachricht zurück sondern einen Wert, der der alten Hintergrundfarbe entspricht.

Ich weiß nicht ob es einfach ne Funktion dazu gibt die Farbe umzustellen.

Aber es ist auf jedenfall möglich Buttons mit Bildern zu versehen.
 
Ich denke, das Einfachste wird es sein, wenn Du Dir den Device Context des Button holst und dort die Hintergrundfarbe setzt, bevor Du ihn anzeigst.
 
Schön wenn es so einfach wäre, Ich habe versucht mit
Code:
 hDC=GetWindowDC(hStart);
    SetBkColor(hDC,RGB(255,0,0));
InvalidateRect(hStart,NULL,TRUE);

Background soll erased sein mit RGB ( 255,0,0) aber wieder nichts.
 
Buttons sind in Bezug auf Farbgestaltung u.ä. leider ein wenig umständlich zu handhaben.
Du müsstest dem Butten den Style BS_OWNERDRAW verpassen und kannst dann auf die Message WM_DRAWITEM reagieren. Allerdings muss dann der komplette Button inklusive aller Zustände (normal, gedrückt, deaktiviert) gezeichnet werden. Ist also mit einigem Aufwand verbunden.

Gruß
MCoder
 
Zurück