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 :

Incompréhensible CFont ...


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut Incompréhensible CFont ...
    Bonjour,
    je suis sous W2000, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    	CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_1);
     
    	CFont* pFont1 = pStatic->GetFont();
    	pFont1->GetLogFont(&LogFont); 
     
    	LogFont.lfWeight = FW_BOLD;
    	LogFont.lfHeight = 24;
     
    	CFont pFont; 
    	pFont.CreateFontIndirect(&LogFont); 
    	pStatic->SetFont(&pFont);
    pour changer la fonte d'un static, mais cela ne marche pas : seul le gras est fait !

    J'ai également essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CFont font;
     
    font.CreateFont (24, 0, 0, 0, FW_BOLD, 0, 0, 0,
        DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
        DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, _T ("Arial"));
     
    	GetDlgItem(IDC_STATIC_1)->SetFont(&font);
    mais ça ne marche pas non plus !!

    La seule chose qui marche est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CFont* pFont = new CFont;
     
        pFont->CreateFont (24, 0, 0, 0, FW_BOLD, 0, 0, 0,
        DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
        DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, _T ("Arial"));
     
    	GetDlgItem(IDC_STATIC_1)->SetFont(pFont);
    Le problème c'est que je me retrouve avec une allocation que je ne libère pas, car si je fais un

    cela ne marche pas non plus !!!


  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,
    declare ton objet fonte au niveau de la classe parent . au lieu qu'il soit locale a la fonction....

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut
    Et voilà ça marche !!
    mais pourquoi ???!!!!????!!!! : :

  4. #4
    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
    re,
    Problème classique !
    Il ne faut pas oublier que les objets graphiques utilisent le destructeur pour faire le ménage au niveau du gdi : CGdiObject:eleteObject
    Donc quand tu déclares une fonte locale à une fonction pour l’affection à un objet CStatic ou CEdit quand tu sors de la fonction ton objet est détruit et la ressource graphique (fonte) avec …..

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut
    Ok,
    donc les objets de type CFont (par exemple) ne peuvent jamais être déclarés local à une fonction car ils sont automatiquement détruits en sortie de cette fonction !

    Sinon, il faut l'allouer soit même dans une fonction, ... et ne pas le désallouer !!!

    c'est ça ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 577
    Par défaut
    Par contre ce qui est un peu lourd, c'est qu'on ne peut donc pas affecter l'objet CFont avec CreateFont plusieurs fois dans la même fonction sinon ça fait boum !

    Donc, pour affecter plusieurs fontes (dans le OnInitDialog()), il faudra autant d'objets membres CFont

  7. #7
    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
    oui c'est ça pour reaffecter une fonte a un objet il suffit de faire DeleteObject
    sur l'objet .

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

Discussions similaires

  1. incompréhension
    Par devalender dans le forum Débuter
    Réponses: 8
    Dernier message: 20/08/2004, 13h57
  2. messages incompréhensibles
    Par devalender dans le forum Outils
    Réponses: 2
    Dernier message: 06/07/2004, 16h53
  3. incompréhension avec ado
    Par Orgied dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/05/2004, 18h24
  4. [WSAD5] probleme incompréhensible
    Par capitaine_banane dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 07/04/2004, 11h56
  5. [JSP] Erreur incompréhensible
    Par xxaragornxx dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/09/2003, 16h37

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