IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

couleur de fond pour un CStatic


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut couleur de fond pour un CStatic
    Bonjour,
    Sur mon projet, j'ai mis une image de fond et quand je mets des textes dessus, le fond des textes reste coloré...
    je peux modifier la couleur des fonds de mes textes (CStatic) avec la fonction: OnCtlColor.. Mais mon probleme, c'est que avec le HBRUSH, je ne peux mettre qu'une couleur unie... Donc pour que mon image de fond ne soit pas masqué par le texte, tout d'abord, je met un fond transparent (pDC->SetBkColor (TRANSPARENT)) mais ca ne suffit pas car la partie ou se trouve le texte reste colorée.
    Pour eviter ca, j'ai pensé à deux truc:
    soit, je crée un HBRUSH transparent mais je ne suis pas sur que ce soit possible, soit je recupere la partie de mon image de fond sur laquelle se trouve mon CStatic et la recopier pixel par pixel sur le fond.
    Est ce que c'est possible??? ou alors, avez vous une autre idée?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Il te reste la solution de retourner la NULL Brush (qui d'après son nom, ne devrait rien changer du tout) mais tu dois spécifier le style WS_EX_TRANSPARENT à ton CStatic pour indiquer que le système doit toujours repeindre la fenêtre avant le static : sinon, quand tu modifieras le static, l'ancien texte ne sera pas effacé...

    (enfin, je n'ai pas testé, mais en théorie, ça devrait marcher comme ça...)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut
    je viens d'essayer de retourner un HBRUSH null mais cela ne marche pas, le dessous du text est toujours opaque...
    Par contre, je n'ai pas bien compris comment spécifier le style WS_EX_TRANSPARENT... Comment on fait et ca sert à quoi???

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu retournes un HBRUSH nul ou le NULL BRUSH (GetStockObject(NULL_BRUSH) permet de l'obtenir) ?

    Et puisque tu es dans une boite de dialogue, afifche les propriétés du static dans l'éditeur de boite de dialogue, et active "transparent' (sous VC 6, c'est une case à cocher dans la rubrique "Extended styles" ou "more extended styles")
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 80
    Points : 39
    Points
    39
    Par défaut
    Oki, pour le WS_EX_TRANSPARENT, je l'avais déja fait, je ne savais pas que ça representais la propriété... par contre, comme je le disais avant, le NULL_BRUSH ne marche pas completement... effectivement, mon CStatic est bien transparent mais seulement là ou il n'y a pas de texte... sous la partie où il y a du texte, le fond reste opaque...

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/04/2008, 05h35
  2. Couleur de fond pour TD
    Par snaxisnake dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 25/02/2008, 20h52
  3. Delphi7 et windows XP pas de couleur de fond pour les TLabel
    Par J.M. dans le forum Composants VCL
    Réponses: 4
    Dernier message: 03/01/2006, 17h40
  4. Réponses: 1
    Dernier message: 30/11/2005, 14h57
  5. Réponses: 10
    Dernier message: 04/04/2005, 21h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo