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

Visual C++ Discussion :

Couleur du texte et du fond d'un CStatic


Sujet :

Visual C++

  1. #1
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut Couleur du texte et du fond d'un CStatic
    Bonjour,

    Je cherche à pouvoir modifier la couleur et le fond d'un control CStatic.

    Pour cela, j'utilise la fichier .h décrit dans la FAQ, le sujet étant:
    Comment gérer la couleur sur un contrôle CStatic ou CEdit ?

    Dans la fonction OnInitDialog, je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CTplCtrl<CStatic> m_WelcomeCtrl;
    	COLORREF RGB1 = 0x0000ff00;
    	COLORREF RGB2 = 0x000000ff;
     
    	m_WelcomeCtrl.SetBkColor(RGB1,RGB2);
    Mais aucun changements à lieu au niveau de mon CStatic quand jl'exécute l'application...Pourquoi?

    Est il possible d'utiliser la fonction CtlColor() pour rendre transparent le fond de mon CStatic afin de bien se superposer avec l'image en fond de ma CDialog?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    HBRUSH CtlColor(CDC* pDC, UINT nCtlColor)
        {
            bool bCEdit=(IsKindOf(RUNTIME_CLASS(CEdit))?true:false);
            HBRUSH hbr=NULL;
            ModeColor eMode=Normal;
            if(GetStyle() & ES_READONLY) eMode=ReadOnly;
            if(!IsWindowEnabled()) eMode=Disable;
     
            // TODO: Change any attributes of the DC here
            pDC->SetTextColor(m_arClrCtlText[eMode]);
     
            // Fixe le fond en transparent  pour le texte
            if(!bCEdit) pDC->SetBkMode(TRANSPARENT);
            else pDC->SetBkColor(m_arClrCtlBkText[eMode]);
     
            // retourne le handle de la brush pour le fond si il existe.
            if(m_arHbrClrCtlBk[eMode]) hbr = m_arHbrClrCtlBk[eMode]; 
     
            // TODO: Return a different brush if the default is not desired
            return hbr;
        }
    Peut être vaut il mieux utiliser le sujet suivant de la FAQ: Comment changer la couleur de fond des contrôles dans une boîte de dialogue ?

    Je suis un peu perdu pour savoir ce qui faut utiliser exactement pour arriver à mes fins.

    Merci

    Nicolas

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut ,si tu declares un objet dans OnInitiDialog ça ne risque pas de fonctionner...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CTplCtrl<CStatic> m_WelcomeCtrl;
    la variable doit etre associée a un controle de la fenetre ou alors une creation dynamique .
    mais dans tous les cas la variable ne peut etre declarée localement à une fonction, sinon elle est detruite en sortant...

  3. #3
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Citation Envoyé par farscape
    la variable doit etre associée a un controle de la fenetre ou alors une creation dynamique .
    mais dans tous les cas la variable ne peut etre declarée localement à une fonction, sinon elle est detruite en sortant...
    Oui en effet, très mauvais point de ma part, je faiblis...

    En fait la variable m_WelcomeCtrl est un control sur un CStatic. Dois je donc effectuer un transtypage en CTplCtrl pour utiliser la fonction SetBkColor?

    Dois je aussi crée un message ON_WM_CTLCOLOR?

    D'ailleurs, comment fonctionne ce type de messages(reflect message)?

    Merci de l'aide.

    Nicolas

  4. #4
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    Autres remarques:

    J'ai donc essayé de transtypé mon control sur CStatic de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CTplCtrl<CStatic> WelcomeCtrl = (CTplCtrl<CStatic>)m_WelcomeCtrl;
    mais j'obtiens une erreur à la compilation...

    Sinon j'ai tenté de rajouter dans le fichier .h, utilisant les fonctions de CTplCtrl, la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef CTplCtrl<CEdit> CEditEx;
    Mais à nouveau une erreur de compilation... Apparemment la cause sont les "< >".

    Bref je crois que pour aujourd'hui, je vais m'arreter là.

    Bonne soirée

    Nicolas

Discussions similaires

  1. déduire couleur de texte pour un fond donné
    Par awalter1 dans le forum Général Python
    Réponses: 3
    Dernier message: 16/08/2011, 17h19
  2. Couleur du fond et couleur du texte apparaissant sur Hint
    Par yendre dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/01/2009, 13h17
  3. [TextOut] Couleur de fond et couleur de texte
    Par colorid dans le forum Langage
    Réponses: 2
    Dernier message: 22/08/2008, 22h14
  4. Couleur de texte, couleur de fond
    Par defluc dans le forum Delphi
    Réponses: 6
    Dernier message: 17/05/2006, 15h15
  5. [border][panel] couleur du texte
    Par harold63 dans le forum Composants
    Réponses: 3
    Dernier message: 29/06/2004, 15h36

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