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 :

Comment mettre un texte static en gras et en couleur ?


Sujet :

MFC

  1. #1
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut Comment mettre un texte static en gras et en couleur ?
    Salut tatous

    Voila, je voudrais savoir s'il est possible de mette mon texte static en vert et en gras, si oui, cé comment ky fo faire .

    Merci

  2. #2
    Membre régulier
    Avatar de Alice9
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2004
    Messages : 124
    Points : 85
    Points
    85
    Par défaut re
    Il faut te créer une font que tu appliques à ton static.

    Dans ton .h de ta classe

    Dans le .cpp de ta classe

    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
     
    ...
    //--------------------------------------------------------------
    // dans doDataExchange
    DDX_Control(pDX,IDC_ST_MY_ST, m_mySt) ;
    ....
     
    //--------------------------------------------------------------
    // dans la fonction d'initialisation de ta classe/boîte ...
    ...
    LOGFONT LogFont_staticTxt ;
     
    // récupération de la police en cours de ton static
    (m_mySt.GetFont())->GetLogFont(&logFont_staticTxt);
     
    // modification de la police
    LogFont_staticTxt.lfWeight=FW_DEMIBOLD; // <-- là c'est le gras
    LogFont_staticTxt.lfHeight = 30 ; // <-- là c'est la taille
    sprintf(LogFont_staticTxt.lfFaceName,"Arial") ; // <-- si tu veux changer de police
     
    // création d'une police qui contiendra toutes les caractéristiques désirées
    CFont* pFontNew=new CFont;
    pFontNew->CreateFontIndirect(&LogFont_staticTxt);
     
    // Mise à jour de ton static avec ta nouvelle police
    m_mySt.SetFont(pFontNew); 
    ...
    Pour la couleur, cherche un peu dans les caractéristiques de LOG_FONT.



    Alice
    ---------------------------------------------------------------
    A coeur vaillant, rien d'impossible
    cf. Chevalier Bayard
    Alice

    A coeur vaillant, rien d'impossible !

  3. #3
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Non pour la couleur il faut définir un handler sur WM_CTLCOLOR :
    http://c.developpez.com/faq/vc/?page...#CEditCtlColor
    Les orteils servent à trouver les pieds de chaise et les montants de porte quand il fait noir.

  4. #4
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Merci pour cette réponse rapide et précise

    Mais j'ai un problème à la compilation:

    DDX_Control(pDX,IDC_STATIC, m_mySt) ;

    sur cette ligne, le compilo me dit :

    error C2065: 'm_mySt' : undeclared identifier

    Je vois pourtant bien cette viriable associée a mon static dans le classWizard bizard bizard ....

  5. #5
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par BertrandA
    Non pour la couleur il faut définir un handler sur WM_CTLCOLOR :
    http://c.developpez.com/faq/vc/?page...#CEditCtlColor
    Ce que tu me montre est pour un Edit, ca marche aussi pour du static ?

  6. #6
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    oui c'est valable pour tous les controles.

  7. #7
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Alors voila,

    En suivant ce qui est dit dans le lien, en supprimant les lignes permettant de mettre de la couleur en cas de "READONLY", j'obtient ce code:

    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
    // CMyEdit
     
    CMyEdit::CMyEdit()
    {
    	CBrush* m_pBrush = NULL;
    }
     
    CMyEdit::~CMyEdit()
    {
    	delete m_pBrush;
    }
     
     
    BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
    	//{{AFX_MSG_MAP(CMyEdit)
    	ON_WM_CTLCOLOR_REFLECT()
    	//}}AFX_MSG_MAP
    END_MESSAGE_MAP()
     
    /////////////////////////////////////////////////////////////////////////////
    // CMyEdit message handlers
     
    HBRUSH CMyEdit::CtlColor(CDC* pDC, UINT nCtlColor) 
    {
    	// TODO: Change any attributes of the DC here
     
    	m_pBrush = new CBrush(RGB(0,255,0));
    	pDC->SetBkColor(RGB(0,255,0));
    	return (HBRUSH)m_pBrush->GetSafeHandle();
     
    	// TODO: Return a non-NULL brush if the parent's handler should not be called
    	return NULL;
    }
    Et le compilo me dit sur cette ligne:

    ceci:

    error C2065: 'm_pBrush' : undeclared identifier

    Je me demande alors que m_pBrush est défini juste o dessus dans le constructeur, si le compilo n'est pas un couill**

    La du coup je n'ai plus d'idée pour avancer ....

  8. #8
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    Citation Envoyé par FAQ
    //déclarer dans la classe produite un pointeur sur une CBrush
    // CBrush* m_pBrushReadOnly=NULL; // le mettre à null dans le constructeur
    tu declares dans ton .h CBrush* m_pBrushReadOnly
    et dans le constructeur tu ecris :m_pBrushReadOnly=NULL;
    c'est tout .

  9. #9
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut


    Le couill** n'est peut être pas toujours le compilo

    Cepandant, même si tout passe à la compilation, je vois toujours mes statics s'afficher en noir, alors que j'ai pourtant mis (0.255.0)

    Je ne comprend pas pourquoi ..

  10. #10
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    bon en plus ton code n'est pas correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    HBRUSH CMyEdit::CtlColor(CDC* pDC, UINT nCtlColor)
    {
       // TODO: Change any attributes of the DC here
      if(!m_pBrush)
       m_pBrush = new CBrush(RGB(0,255,0));
       pDC->SetBkColor(RGB(0,255,0));
       return (HBRUSH)m_pBrush->GetSafeHandle();
     
       // TODO: Return a non-NULL brush if the parent's handler should not be called
       return NULL;
    }
    maintenant afficher pour toi c'est quoi ?:
    couleur d'ecriture du texte ,du fond du texte etc...
    la on ne touche qu'au background .

  11. #11
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Il faudrait en fait que j'écrive mes statics en vert, gras,

    Mais je ne veu pas toucher au backGround.

  12. #12
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    A mon avis c'est sur cette ligne qu'il faut intervenir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pDC->SetBkColor(RGB(0,255,0));
    Mais je ne connais pas la fonction me permettant de modifier la couleur de mes textes statics, pleazz HELP !!

  13. #13
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Je vien de tester ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    HBRUSH CMyEdit::CtlColor(CDC* pDC, UINT nCtlColor) 
    {
    	// TODO: Change any attributes of the DC here
     
    	if(!m_pBrush) m_pBrush = new CBrush(RGB(0,255,0));
     
    	pDC->SetTextColor(RGB(0, 255, 0));
    	return (HBRUSH)m_pBrush->GetSafeHandle();
     
    	// TODO: Return a non-NULL brush if the parent's handler should not be called
    	return NULL;
    }
    La fonction SetTextColor semble être celle qui m'intéresse, seulement même si ce code passe a la compilation, lors de l'exécution je ne voi aucun changement ....

    N'hésitez pas à me corriger si g une erreur dans ce code. Merci

  14. #14
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    J'ai enfin réussi à mettre mes static en couleur, (ouf ca avance un peu ...)

    Le problème c'est que je n'est pas que mes statics en vert mais tous les textes de ma boitie de dialogue, j'ai bien tenter de voir comment remettre une couleur noir a ma combo, ma listBox et mes editBox, mais je ne trouve pas de fonction capables de réaliser ceci.

    Un peu d'aide serait la bienvenue,

  15. #15
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Je croi que je doit reformuler ma demande

    Est-ce qu'il y a un moyen de régler la couleur uniquement pour mes textes Statics, ainsi que la fonte ?

    J'ai l'impression qu'il n'y a pas moyen de modifier la couleur d'un seul contrôle....

  16. #16
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    mais si ,mais si ,
    j'ai pas tout relu le post.
    pour affecter une fonte a un controle il suffit de faire SetFont .
    pour changer les attributs voir faq:
    http://c.developpez.com/faq/vc/?page...CustomFontCtrl

    Attention je le redis au cas ou l'objet fonte de la faq ne doit etre local à la fonction mais presistant dans la classe...

  17. #17
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Il ya une petite chose que je ne comprend pas dans ton lien:

    // CFont m_font; // objet local à la classe parent fenetre CDialog,CFormView

    Ou faut il que je définisse m_font ?

  18. #18
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    dans la classe ou est definit ce contrôle (donc sa fenetre parent) ,qui doit etre soit une CDIalog ou une CFormView .

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Points : 159
    Points
    159
    Par défaut
    Hello, je me permet d'intervenir ici car ça m'intéresse aussi.

    Si pour la fonte en gras je n'ai eu aucun problème en appliquant la FAQ du lien ci-dessus, ça n'est pas le cas pour la couleur.
    J'ai pas l'impression qu'on puisse reprendre exactement la même structure.

    Moi j'ai fait ça dans InitDialog(), pourquoi ça ne fait rien?
    CWnd * pWnd = GetDlgItem(IDC_STATICRED);
    CDC* pDC = pWnd->GetDC();
    pDC->SetTextColor(RGB(255,0,0));

    Hokagge, apparemment t'as réussi, tu peux dire comment?
    Merci

  20. #20
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    Citation Envoyé par stof
    Hello, je me permet d'intervenir ici car ça m'intéresse aussi.

    Si pour la fonte en gras je n'ai eu aucun problème en appliquant la FAQ du lien ci-dessus, ça n'est pas le cas pour la couleur.
    J'ai pas l'impression qu'on puisse reprendre exactement la même structure.

    Moi j'ai fait ça dans InitDialog(), pourquoi ça ne fait rien?
    CWnd * pWnd = GetDlgItem(IDC_STATICRED);
    CDC* pDC = pWnd->GetDC();
    pDC->SetTextColor(RGB(255,0,0));

    Hokagge, apparemment t'as réussi, tu peux dire comment?
    Merci
    parce que ça ne fonctionne pas comme ça .
    voir faq:
    http://c.developpez.com/faq/vc/?page...#CEditCtlColor
    et comme je l'ai dis plus haut l'exemple faq c'est un edit
    mais c'est pareil pour les autres controles.
    note ces sujets sont expliqués dans mon tuto ...

Discussions similaires

  1. Comment mettre du texte en gras sur la console ?
    Par minooo dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 03/05/2011, 00h13
  2. Réponses: 2
    Dernier message: 16/04/2007, 14h17
  3. [VB.Net] Comment mettre un texte dans un NotifyIcon ?
    Par Aspic dans le forum Windows Forms
    Réponses: 19
    Dernier message: 25/07/2006, 21h29
  4. [JTextPane] Mettre le texte sélectionné en gras
    Par serwol dans le forum Composants
    Réponses: 4
    Dernier message: 18/10/2005, 14h46
  5. comment mettre du texte formaté dans une frame?
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 09/10/2005, 14h55

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