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 :

[MFC]arriere plan pour un objet de la classe CStatic


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [RESOLU][MFC]arriere plan pour un objet de la classe CStatic
    Bonjour.

    Comment puis-je changer la couleur de l'arriere plan d'un element appartennant a la classe CStatic.

    J'aimerais mettre un arriere plan rouge mais je ne trouve pas la fonction qu"il me faut .

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2002
    Messages : 106
    Points : 113
    Points
    113
    Par défaut
    Salut,
    une solution est de récupérer le fond associé à ta CStatic (méthode GetFont), le modifier.
    T'as plus qu'à appeler la fonction SetFont pour associer le nouveau fond à ton static.

    Ou créer directement un fond comme tu le veux (méthode CreateFontIndirect) et tu l'associes à ta CStatic.

    Y'a aussi certainement une autre méthode mais l'avantage de celle ci est qu'elle marche pour tous les contrôles qui héritent de CWnd. Donc une fois que tu la comprise, tu peux changer des fonds dans des CEdit, des CTreeCtrl...

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup cra cela va bien me servir je te remerci pour ton aide

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 30
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Y'a confusion, je crois!!!
    GetFont, CreateFont...... et les autres c'est pour modifier la police(Font (traduction) police).

    Comment changer la couleur de fond d'un dialogue ? d'un contrôle en particulier ? la couleur du texte ?
    Exemple ici :
    http://www.lafaqmfc.com/dialogs.htm

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour James.

    Ton information est peut être très utile mais je ne voit pas comment l'utiliser peut tu m'aider S.V.P.
    MErci d'avance.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 30
    Points : 30
    Points
    30
    Par défaut
    Je vais essayer!!!

    j'ai repris la fonction de la FAQ:

    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
    HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
       HBRUSH hBrush = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); 
     
       switch (nCtlColor)
       { 
            case CTLCOLOR_STATIC : // pour les statics
               if ( pWnd->GetDlgCtrlID () == IDC_MONSTATIC )
               {
                    // seulement pour le static que tu veux modifier
                    pDC->SetTextColor (RGB(128,0,0)); // texte rouge fonce 
                    pDC->SetBkColor (RGB(0,0,0));  // fond noir  
               } ;
              break ; 
            default:
               break;
       } ; 
       return hBrush ;
    }
    tu dois surcharger cette fonction, c'est à dire la modifier pour ton dialogue.

    Click droit->Class Wizard->Messages Maps
    tu choisis ton dialogue dans object ID's( un truc du genre CMonDialogueDlg), ensuite dans Messages, tu selectionnes WM_CTLCOLOR et Add Function.

    Il te suffit de copier du dessus à l'intérieur

    Pour les couleurs, http://www.immigration-usa.com/html_colors.html

    Voila
    Bon courage

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci pour cela mais je vais encore t'embetter mais comment puis-je recupérer j'ai créer une biote de dialoque avec MFCAPPWisard(.EXE)
    mais je ne voit pas cette déclaration apparaître.

    Peut-tu m'aider

    Merci d'avance.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 30
    Points : 30
    Points
    30
    Par défaut
    Normalement, c'est un argument de la fontion qui est connu lors du passge dans cette fonction, tu n'as rien à modifier!!!

    Il faut créer la methode avec le ClassWizard, il te fait tout, tout seul
    suis ce que j'ai écris plus haut

    Voila

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Mon problème est qu'il faut bien appeller cette fonction.
    de cette maniere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    st1->OnCtlColor((CDC*) pDC,GetParent ( ) , CTLCOLOR_STATIC);
    le probleme est que je ne sait quoi lui donné en premier paramêtre pour les autres j'ai trouvé.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 30
    Points : 30
    Points
    30
    Par défaut
    Non,tu n'as pas besoin de l'appeler. tu y passes forcement au demarrage de ton appli.


    Maintenant si tu veux changer en cours de prog. la couleur de ton static, tu peux recuperer le CDC de ta boite de dialogue avec GetWindowDC();



    tu fais un appel de ce genre

    OnCtlColor(GetWindowDC(), this, CTLCOLOR_STATIC);

  11. #11
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    J'ai plusieur static dans ma classe puis-je avoir plusieur couleur différentes suivant le static ?

    si oui on le spéecifie dans le switch de la fonction non ?

  12. #12
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 79
    Points : 96
    Points
    96
    Par défaut
    peut etre en surchargeat la fonction en lui faisant prendre l'id du static :

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 30
    Points : 30
    Points
    30
    Par défaut
    Dans l'exemple de code que je t'ai donné, il y a ce cas là, je veux bien t'aider mais il faut mettre un peu du tien!!!!!!

  14. #14
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    James je ne te dérange plus maintenant car j'ai trouvé la solution et je te remercie pour toutes l'aide que tu m'as donnée car désormais je pense que tout mes problèmes vont être résolue grâce à l'aide que tu m'as donné

    MERCI encire pour tout et bonne continuation

    Gabriel Knight

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différentes profondeurs de plan pour des objets surperposés dans un Canvas
    Par Flaburgan dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 26/07/2011, 10h27
  2. [Débutant] arriere plan pour une interface guide
    Par abdousoft dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 06/06/2011, 22h04
  3. premier plan/arriere plan pour éléments graphiques
    Par MathildeJ dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/07/2010, 09h49
  4. changer arriere Plan ( MFC - C++)
    Par kam42 dans le forum MFC
    Réponses: 2
    Dernier message: 30/11/2007, 17h50
  5. Réponses: 10
    Dernier message: 21/04/2005, 10h00

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