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]Changer CFont et une Police d'une façon parametrable ?


Sujet :

MFC

  1. #1
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut [MFC]Changer CFont et une Police d'une façon parametrable ?
    Je voudrais changer le CFont actuelle en chargeant la nouvelle valeur d'une variable CString afin de l'utiliser pour afficher quelques parametres sur mon CDialoget puis remettre l'ancienen CFont ( celle par defaut ) en plus pour ces meme parametres j'ai une Police particuliere aussi..
    j'ai elaboré ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    CString MyFont = ..... // je la recupere quelquepart 
    CString MyPolice = ..... // idem 
     
     
    CFont *OldFont  = this->GetFont();
    this->SetFont(MyFont,TRUE); // erreur ici bien sur pas le meme type :) 
    this->m_BADOCR_B.SetWindowText(m_VCAConfig->getSTEP0BAD2NUMCEDBUTTONCAPTION()); // recuperer la valeur a afficher
    this->m_NumFBC_L.SetWindowText(m_VCAConfig->getALLSTEPSNUMFBCLABEL());
    this->SetFont(OldFont,TRUE);
    mais comem d'habitude pour un premier essai il y a des erreurs ....quelqu'un aurait il une idee pour prendre en compte les nouvelles police/font uniquement pour l'affichage de ces deux parametres et puis remettre les anciennes pour d'autres affichages!!

    j'espere que c'est clair

    merci
    Ce que l'on fait dans sa vie...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Points : 82
    Points
    82
    Par défaut
    Alors 2 choses :
    1 - La fonction SetFont de la CWnd ne fonctionne pas comme en GDI (SelectObject et tout le toutim). Ds ton exemple seul OldFont serait pris en compte pour tes 2 controles.
    Avec un objet héritant de CWnd (comme ton m_BADOCR_B et m_NumFBC_L apparement) tu doit donc affecter ta font directement en utilisant la fonction SetFont directement sur ton objet.

    2 - En ce qui concerne une font dynamique, je te conseille de la déclarer en données membre et de la modifier qt nécessaire (par le LogFont par exemple)

  3. #3
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    pourrais tu m'aider avec un exemple de code stp!! en plus comment faire pour la police ?

    merci
    Ce que l'on fait dans sa vie...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Points : 82
    Points
    82
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ---.h
    CFont m_Font;
     
    ---.cpp
    // Création de la font
    VERIFY(m_Font.CreateFont(WEIGHT_SMALL_FONT, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
    		CLIP_DEFAULT_PRECIS, PROOF_QUALITY, VARIABLE_PITCH | 0x04 | FF_DONTCARE, "Verdana"));
    ...
    TaWnd.SetFont(m_Font);
    ...
     
    // Destruction
    m_Font.DeleteObject();
    Pour la modification de ta police tu peux la détruire et la recréer ou bien utiliser LOGFONT dans la classe CFont (cf MSDN)

  5. #5
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    pour garder l'ancienne font et la restaurer apres tu me conseilles donc l'utilisation de setfont() et getfont() ou pas?
    Ce que l'on fait dans sa vie...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 101
    Points : 82
    Points
    82
    Par défaut
    J'ai l'impression qu'il y a une notion sur laquelle tu te méprends.

    Comme je te l'ai dit dans mon premier message : dans l'exemple que tu donnes, en dehors des erreurs et simplement sur la logique :

    Ton m_BADOCR_B et m_NumFBC_L auront la police OldFont et non pas MyFont. Relis bien ton exemple pour comprendre.

    En faisant SetFont tu affectes simplement la donnée membre de tes objets. Tu n'affectes pas leurs contextes (comme en GDI lorsque tu utiliser les CDC::SelectObject).

    Autrement dit tes controles possédent une font que tu leur affecte à un moment précis et qu'ils utiliseront pour se dessiner

    Bon courage et bon week-end (moi je file :o)

    Tu ne m'a pas dit si ton pb sur la fermeture de dialog était résolu

  7. #7
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Attention à la durée de vie des objets du GDI.
    Si tu veux stocker un objet du GDI en mémoire par exemple CFont. Ce n'est pas un pointeur qu'il faut sotcker mais son handle.

  8. #8
    Membre du Club Avatar de jlassira
    Inscrit en
    Mai 2005
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 228
    Points : 61
    Points
    61
    Par défaut
    donc ej remplacerai ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CFont *OldFont  = this->GetFont();
    par quoi ! quel handle au juste !!
    Ce que l'on fait dans sa vie...

Discussions similaires

  1. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Insérer une légende dans une image avec une police plus petite
    Par Paulinho dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 29/04/2006, 14h19

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