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 :

changer la taille de la police


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut changer la taille de la police
    Bonjour,
    J'essaye depuis 2 jours de changer la taille de la police sur un bouton et dans une listbox mais je n'y arrive pas. J'ai essayé tous ce que j'ai pu trouver sur les forum mais rien n'y fait. En fait lorsque je change la taille ca m'ecarte mes lignes de texte dans ma liste et ca ne change rien sur le bouton. J'ai mis les ligne de code suivante dans mon initdialog.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CWnd *pWnd = GetDlgItem(IDC_AFFICHERC);
        CFont* pFont = pWnd->GetFont();
        LOGFONT lf;
        pFont->GetLogFont(&lf);
        lf.lfWeight=FW_BOLD;//mettre l'attribut en gras par exemple.
    	lf.lfHeight=100;
    	CFont m_font;  // objet local à la classe parent fenetre CDialog,CFormView
          //m_font.CreateFont(0, 0, 0, 0, FW_NORMAL,
                    //0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS,
                    //CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH |
                    //FF_DONTCARE, "Arial");
         m_font.CreateFontIndirect(&lf); // creation de la fonte d'apres la LOGFONT
    	 pWnd->SetFont(&m_font);  // affectation de la nouvelle fonte.
    	 m_ListFichier.SetFont(&m_font);
    Merci de votre aide

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    chez moi (sous Visual6 également) ton code fonctionne.
    - L'identifiant du controle est peut-être erroné (IDC_AFFICHERC)
    - Je ne comprends pas le but de la dernière ligne ( m_ListFichier.SetFont(&m_font) ). A quoi est-elle censée servir? Pour mon test, je l'ai supprimée.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    La derniere ligne est la pour appliquer la police à une liste.
    Je n'arrive vraiment pas a comprendre pourquoi ce code ne fonctionne pas chez moi.
    J'ai pourtant visual 6 aussi
    Il n'y à pas de fichier à inclure pour que le code fonctionne?
    Merci d'avoir répondu

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    En fait que je mette n'importe quel valeur dans le cFont j'ai le meme résultat donc je pense que celui-ci n'est pas pri en compte. Y a t'il possibiliter de changer la police pour tous les contrôles de la fénètre en une fois?
    J'ai join un petit essai que j'ai fais pour changer la police sur le bouton. Je n'arrive pas a ecrire de facon à ce que le texte tienne tout le bouton. La taille ne change jamais. pouvez vous m'aider ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    ce ne serait pas par hasard parce que m_font (qui est défini localement, donc ayant une durée de vie limitée au scope courant (fonction, bloc conditionnel...)) serait détruit, rendant du même coup le HFONT encapsulé invalide ?

  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
    exact ,comme le bout de code cité de la faq l'indique ,l'objet m_font est a déclarer dans la classe pour qu'il soit persistant ....

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    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 379
    Points : 41 573
    Points
    41 573
    Par défaut
    COmme l'indique son préfixe m_...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Super ça marche.
    Merci à tous pour vos réponses

  9. #9
    Membre du Club Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 66
    Points
    66
    Par défaut
    Bonjour,

    Je réouvre ce sujet car je voudrais savoir si on peut faire la même chose sur un CStatic???

    Je voudrais changer la taille de la police dans une CDialog (le texte étant dans un CStatic).


    Merci

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par Sachiel31
    Bonjour,

    Je réouvre ce sujet car je voudrais savoir si on peut faire la même chose sur un CStatic???

    Je voudrais changer la taille de la police dans une CDialog (le texte étant dans un CStatic).
    C'est au niveau de CWnd que ça se passe ; CStatic dérive de CWnd, donc oui on peut faire la même chose.

  11. #11
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 264
    Points : 6 683
    Points
    6 683
    Billets dans le blog
    2
    Par défaut
    En effet, tous les controles de la MFC (CEdit, CStatic, CComboBox, CButton, etc.) héritent de CWnd. Ils héritent donc de toutes les fonctionnalités de CWnd, dont la gestion des fontes.

  12. #12
    Membre du Club Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 66
    Points
    66
    Par défaut
    Ce que j'aimerais en fait, c'est que le message qui s'affiche soit écris plus grso et en gras.

    Pour tester, j'ai repris la structure du code de titouf71 mais en changeant 2,3 trucs
    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
    CWnd* pWnd;
    pWnd = GetDlgItem(IDC_StaticValider);
    
    CFont* pFont = pWnd->GetFont();
    
    LOGFONT lf;
    pFont->GetLogFont(&lf);
    lf.lfWeight=FW_BOLD;
    lf.lfHeight=15;
    
    CFont m_font;
    
    m_font.CreateFontIndirect(&lf);
    
    pWnd->SetFont(&m_font);
    Problème : ça passe à la compilation mais quand je l'exécute j'ai un joli message d'erreur au niveau de la ligne en rouge.

    Je suis pas très calée niveau MFC..., donc il se pourrait je j'ai écris des bétises



    @Rod : je vois pas de quoi tu veux parler

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    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 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Et qu'est-ce que ça donne au debugger ?
    Ici, on ne sait pas quelle est l'assertion qui échoue...

  14. #14
    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
    salut,
    heu tu es en train de reproduire la même erreur qui est à l'origine de ce post
    je te donne Un indice : quelle est la portée de l’objet m_font ?

  15. #15
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    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 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Et pourquoi s'appelle-t-il m_font, sachant que MFC utilise cette convention pour toutes les variables membres ?


    (Euh ? Ce *^$&$é"^"*é^ de forum me coupe mon espace insécable!)

  16. #16
    Membre du Club Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 66
    Points
    66
    Par défaut
    Désolée je n'ai pas édité mon code (m_font est déclaré dans ma classe).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CWnd* pWnd;
    
    pWnd = GetDlgItem(IDC_StaticValider);
    CFont* pFont = pWnd->GetFont();
    
    LOGFONT lf;
    pFont->GetLogFont(&lf);
    lf.lfWeight=FW_BOLD;
    lf.lfHeight=15;
    	
    m_font.CreateFontIndirect(&lf);
    pWnd->SetFont(&m_font);
    Comme je l'ai dit, en débug l'erreur se fait lors de l'exécution de la ligne en rouge.

  17. #17
    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 medinoc
    Et pourquoi s'appelle-t-il m_font, sachant que MFC utilise cette convention pour toutes les variables membres ?
    parce que les gens lisent les choses a moitié, 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
     
      CWnd *pWnd = GetDlgItem(IDC_STATIC1);
       CFont* pFont = pWnd->GetFont();
       if(pFont!=NULL)
       {
          LOGFONT lf;
          pFont->GetLogFont(&lf);
          lf.lfWeight=FW_BOLD;//mettre l'attribut en gras par exemple.
          // CFont m_font;  // objet local à la classe parent fenetre CDialog,CFormView
     
          m_font.DeleteObject();  // destruction GDI de l'ancien objet eventuellement
          m_font.CreateFontIndirect(&lf); // creation de la fonte d'apres la LOGFONT
        }
        pWnd->SetFont(&m_font);  // affectation de la nouvelle fonte.
    http://c.developpez.com/faq/vc/?page...CustomFontCtrl

  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
    si il y a erreur sur la ligne rouge,c'est que la classe fenetre d'ou l'appel est réalisé n'est pas initialisée graphiquement m_hWnd est égal a null.

    Rappel :
    Une fenêtre CDialog est prête a partir de OnInitDialog().
    Une Fenêtre CFormView à partir de OnInitialUpdate.()

  19. #19
    Membre du Club Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Points : 66
    Points
    66
    Par défaut
    C'est bon ça marche

    En fait je n'avais pas remarqué que ma CDialog n'avait pas la fonction OnInitDialog()

    Maintenant c'est beaucoup mieux.

    Merci

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

Discussions similaires

  1. Changer la taille de la police indépendamment de l'environnement math
    Par lock42 dans le forum Mathématiques - Sciences
    Réponses: 3
    Dernier message: 06/06/2007, 11h15
  2. changer la taille de la police de certains mots
    Par bateau_a_voile dans le forum VBA Word
    Réponses: 17
    Dernier message: 04/06/2007, 15h34
  3. [VBA-W] changer la taille de la police d'un signet
    Par dev81 dans le forum VBA Word
    Réponses: 6
    Dernier message: 25/04/2007, 09h46
  4. [J2ME] changer la taille de la police
    Par clementv dans le forum Java ME
    Réponses: 2
    Dernier message: 14/06/2006, 18h59
  5. Changer la taille d'une police SDL_ttf.
    Par Kerwando dans le forum SDL
    Réponses: 4
    Dernier message: 06/06/2006, 12h10

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