static: farben zur laufzeit ändern



  • moin,

    ich habe:

    case WM_CTLCOLORSTATIC:
                SetBkMode ((HDC) wParam, TRANSPARENT);
                return (LRESULT)GetStockObject(NULL_BRUSH); // Hintergrund färben
            break;
    

    nun möchte ich die Hintergrundfarbe/TextFarbe von einem Static ändern, zb über SendMessage(), doch welche message???

    PS: es geht eigentlich um RadioFelder 😉 aber ist ja fast gleich



  • omg, hatten wir doch schon...Also:

    LRESULT CALLBACK WndProc(...)
    {
       static HBRUSH hbStatichBk;
    
       switch(uiMessage)
       {
          case WM_CREATE:
              hbStatichBk = CreateSolidBrush(RGB(rot,blau,grün));
              // ...
    
         case WM_CTLCOLORSTATIC: // oder WM_CTLCOLORBTN:
             SetBkMode(HDC)wParam, TRANSPARENT);
             return ((LRESULT)hbStatichBk); // Hintergrund färben
    
         case WM_DESTROY:
             // ...
             DeleteObject(hbStatichBk);
             PostQuitMessage(0);
             return (0L);
       }
    }
    

    einfach hbStatichBk ändern, und ein InvalidateRect(hWndStatic), NULL, FALSE); aufrufen, damit wird dein static dann neugezeichnet...denk an DeleteObject

    PS: Selber denken schadet auch nicht


Anmelden zum Antworten