Statique de Contrôle de la Couleur d'arrière-plan avec le C++

Je suis entrain de créer une base de GUI avec l'API de Windows et j'ai couru dans un problème. Il commence avec une fenêtre principale qui s'ouvre avec une couleur de fond personnalisée-je définir (RGB(230,230,230)). Il affiche alors le texte dans le coin supérieur gauche avec le contrôle de l'électricité statique.

settingstext = CreateWindow("STATIC",
                             "SETTINGS",
                             SS_LEFT | WS_CHILD,
                             12,
                             20,
                             100,
                             20,
                             hwnd,
                             NULL,
                             proginstance,
                             NULL);
ShowWindow(settingstext, 1);

Cela fonctionne, mais lorsque le texte est affiché j'ai besoin d'un moyen de changer le fond de il pour correspondre à la fenêtre principale, ou autre, il semble comme il n'a pas fondre dans la masse.

Ma question est, comment puis-je faire cela? J'utilise actuellement la méthode ci-dessous et il fonctionne, mais je voulais savoir, est-il un moyen de régler durablement la couleur d'arrière-plan en quelque sorte, à droite après le CreateWindow fonction pour le contrôle de l'électricité statique sans changer de système de couleurs, et il s'applique à un contrôle et pas quelque chose qui envoie le WM_CTLCOLORSTATIC message. J'ai expérimenté autour avec l'aide de la GetDC fonction et SetBkColor fonction à l'extérieur de la boucle de message, mais rien ne fonctionne.

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

Je veux le faire parce que...

  • Je ne veux pas remplir mon message en boucle avec les fonctions qui doivent être appelée à chaque fois que la fenêtre repeint.
  • Ont les modifications s'appliquent uniquement à ce contrôle de l'électricité statique.

Je serais très reconnaissant pour toute aide qui pourrait être apportée, à moins de me pointer dans la bonne direction grâce.

Vous pouvez limiter l'effet de la WM_CTLCOLORSTATIC code juste votre contrôle de l'électricité statique en vérifiant que (HWND)lParam == settingstext. Il y a un problème avec votre exemple, que tous ces brosses vous créez ne sera jamais supprimé.

OriginalL'auteur contrapsych | 2010-12-21