Fensterfarbe ändern



  • Hallo,
    ich habe schon bisschen hier im forum und bei google rumgesucht, habe aber noch nichts richtiges gefunden um die Fensterfarbe zu ändern.

    ich habe gefunden:

    WM_CTLCOLORSTATIC (weis nicht, ob dies richtig ist für normale fenster) und WM_PAINT

    ersteres habe ich wie folgt versucht zu implementieren (aus dem MSDN):

    case WM_CTLCOLORSTATIC://WM_CTLCOLOR:
        {
          HDC hdcStatic = (HDC) wParam;
    
          SetTextColor(hdcStatic, RGB(255,255,255));
          SetBkColor(hdcStatic, RGB(0,0,0));
          return (INT_PTR)CreateSolidBrush(RGB(0,0,0));
        }break;
    

    mein Programm stürzt nun mit unbekannter Softwarefehler ab...weis jemand warum? - lag an etwas anderem 🙂 (gibt scheinbar kein [del]-tag)

    bei WM_Paint muss ich dann halt malen/füllen, das wollte ich eigentlich vermeiden. gibt es keine einfachere Möglichkeit die hintergrundfarbe zu setzen?

    an die Klasseneigenschaft kann ich nicht ran, da dann bei jeder instanz die farbe geändert wird.

    Gruß Frank



  • Das Problem wird an deinem Rückgabewert liegen. Du erzeugst bei jeder WM_CTLCOLORSTATIC Message ein neues Brush-Objekt welches auf kurz oder lang deine Anwendung 'abschmieren' lässt. Lege ein statisches HBRUSH in der WndProc an und erstelle das Objekt bei WM_CREATE (bei WM_DESTROY wieder freigeben).


Anmelden zum Antworten