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 :

Colorisation


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Par défaut Colorisation
    Salut,

    je suis en train d'essayer de changer la couelur d'une DialogBox et de certains controles.

    j'utilise donc le code donné dans 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    HBRUSH CTestsDiversDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    /* CTLCOLOR_BTN         button control
       CTLCOLOR_DLG         dialog box
       CTLCOLOR_EDIT        edit control
       CTLCOLOR_LISTBOX     list box
       CTLCOLOR_MSGBOX      message box
       CTLCOLOR_SCROLLBAR   scroll bar
       CTLCOLOR_STATIC      static text, frame, or rectangle 
    */
     
    // TODO: Change any attributes of the DC here
     
    // par exemple en fonction de nCtlColor voir doc.
        switch(nCtlColor)
        {
            // Intercepte le message pour la dialogue et les statics. 
            case CTLCOLOR_DLG:
            case CTLCOLOR_STATIC  :
                    //  Fixe la couleur d’ecriture du texte
                    pDC->SetTextColor(m_ClrCtlText);
                    // enventuellement suivant les cas
                    // pDC->pDC->SetBkColor(m_ClrCtlBk);
                    // Fixe le fond en transparent  pour le texte 
                    // à ne pas faire pour un edit.
                    pDC->SetBkMode(TRANSPARENT);
                    // retourne le handle de la brush pour le fond si il existe.
                    If(m_HbrClrCtlBk ) hbr = m_HbrClrCtlBk;
                    break;
         }
        // TODO: Return a different brush if the default is not desired
        return hbr;
    }
    mon probleme est que je ne sais pas quoi passer en paramètre
    qu'est ce qu'un CDC ???

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut Re: Colorisation
    Citation Envoyé par ClaireC38
    qu'est ce qu'un CDC ???
    Réponse ici
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Par défaut Re: Colorisation
    Citation Envoyé par Trap D
    Citation Envoyé par ClaireC38
    qu'est ce qu'un CDC ???
    Réponse ici
    dsl mais je ne vois toujours pas quoi passer en paramètre ...

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Tu n'as pas à t'occuper des paramètres à passer, tu réécris en fait la fonction
    OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor).

    Donc tu dois indiquer que ton Dlg gère le message WM_CTLCOLOR en rajoutant dans le MESSAGE_MAP de ton Dlg
    et en déclarant dans les fonctions protégées de ta classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
    .
    Il te faudra rajouter les différentes variables de classe au bon endroit et ça tourne.
    Charge le .zip de farscape, il y a un exemple dedans.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2004
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par défaut
    Bonjour,
    Tu ne dois pas appeler cette fonction directement, lors de l'affichage de ta fenêtre elle est appelée automatiquement pour récupérer la couleur de tes contrôles.

  6. #6
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Par défaut
    oki merci beaucoup à tous les deux

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

Discussions similaires

  1. [DBGRID] Comment coloriser 1 ligne sur 2 dans un DBGRID
    Par did85 dans le forum Bases de données
    Réponses: 28
    Dernier message: 26/10/2011, 15h22
  2. Colorisation de fond de TDbGrid sur 2 couleurs
    Par AODRENN dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/08/2005, 19h54
  3. Réponses: 5
    Dernier message: 15/04/2005, 14h22
  4. Réponses: 3
    Dernier message: 12/12/2004, 17h48
  5. [RICHEDIT] -> Coloriser une syntaxe ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/01/2004, 12h57

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