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] Comparaison de Font


Sujet :

MFC

  1. #1
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut [MFC] Comparaison de Font
    J'ai une variable de type CFontHolder et une description de font :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    static const   FONTDESC font_desc_ =
      { sizeof(FONTDESC), OLESTR("Arial"), FONTSIZE( 12 ), FW_BOLD, 
         ANSI_CHARSET, FALSE, FALSE, FALSE };
    et j'aimerai savoir si ma variable de type CFontHolder correspond à la description du dessus.

    Comment faire ?

    Merci

    Nico

  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 tu peux faire ça:
    extrait code perso dans un activex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CFont *pInternalFont=NULL;
    CFontHolder *pHolder=&InternalGetFont();
    if(pHolder)
    {	
    pInternalFont = CFont::FromHandle(pHolder->GetFontHandle());
    }
    LOGFONT lf;
    If(pInternalFont) VERIFY(pInternalFont ->GetLogFont(&lf));
    une fois que l'on dipose de la logfont il ne reste plus qu’a comparer les éléments pour voir si l’on la description du même objet.

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    en fait, j'avais déjà transformé mon CFontHolder en LOGFONT, bien que d'une autre facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	HFONT h_font = NULL;
    	LOGFONT log_font;
    	h_font = stamp_font_->GetFontHandle();
    	::GetObject(h_font,sizeof(LOGFONT), & log_font);
    mais c'est bien la comparaison qui me fait défaut, sachant que je vois pas trop comment comparer un LOGFONT avec un FONTDESC

    Merci

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    Bon, j'ai l'air d'avoir un autre problème, chaque chose en son temps

    dans mon activeX, j'initialise donc une propriété stamp_font
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    static const FONTDESC stamp_font_desc_ =
      { sizeof(FONTDESC), OLESTR("MS Sans Serif"), FONTSIZE(14), FW_BOLD, 
        ANSI_CHARSET, FALSE, FALSE, FALSE };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PX_Font(pPX, _T("StampFont"), *stamp_font_, & stamp_font_desc_);
    je veux savoir si cette propriété est celle que j'ai mise par défaut (à savoir le Ms Sans Serif, en 14 gras)

    donc, je me propose de tester la propriété (stamp_font) ; pour cela je la transforme en LOGFONT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	CFont *pInternalFont=NULL;
    	pInternalFont = CFont::FromHandle(stamp_font_->GetFontHandle()); 
     
    	LOGFONT lf1,lf2;
    	pInternalFont ->GetLogFont(&lf1);
    et je la tete avec une LOGFONT crée à partir de la valeur par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	CFontHolder * priv_font = new CFontHolder(NULL);
    	priv_font->InitializeFont(&stamp_font_desc_);
    	pInternalFont = CFont::FromHandle(priv_font->GetFontHandle()); 
    	pInternalFont ->GetLogFont(&lf2);
    et à premiere vue, le debugger ne me donne pas les memes valeurs pour le lf1 et lf2 (nottament pour le .lfHeight) (avec ma méthode ou la tienne, c pareil)

    Tu saurais où je me suis raté ?

  5. #5
    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,
    pour la comparaison de fonte on devrait pouvoir faire ça qu'en penses tu ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CString str=CString(plogfont->lfFaceName);
    if(str==font_desc_.lpstrName && 
    //abs(plogfont->lfHeight)==abs(font_desc_.sWeight) &&
    plogfont->lfWeight==font_desc_.sWeight           &&
    plogfont->lfCharSet==font_desc_.sCharset         &&
    plogfont->lfItalic==font_desc_.fItalic           &&
    plogfont->lfUnderline==font_desc_.fUnderline     &&
    plogfont->lfStrikeOut==font_desc_.fStrikethrough)
    {
    // identique
    }
    petit pb avec la hauteur je reflechis....

  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
    Par défaut
    bonsoir ,
    pour le pb de la hauteur j'ai resolu le pb
    j'avais fait une fonction qui calculait la hauteur d'une fonte à partir d'un nombre de point j'ai appliquer la methode inverse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // calcul de la hauteur pour une logfont pour une taille en points
    POINT pt;	
    pt.y = pDC->GetDeviceCaps(LOGPIXELSY) * nbpoints;
    pt.y /= 720;	// 72 points/inch, 10 decipoints/point	
    pDC->DPtoLP(&pt, 1);
    lg.lfHeight=-pt.y;
     
    // le calcul inverse
    double dTaillePts=((abs(lg.lfHeight)*720)/pDC->GetDeviceCaps(LOGPIXELSY))/10.;
    donc le code de comparaison donné dans mon dernier post peut s'appliquer en completant avec le calcul ci dessus.
    attention pour les tailles du style 9.75 le calcul donnera 9.70

  7. #7
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    Merci de ton aide,

    mais ce qui me parait pas logique, c'est que les deux fontes, créees avec à partir de la meme description, ne donnent pas des valeurs égales.

  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
    Par défaut
    il faudrait peut etre voir si c'est pas le pb avec les tailles :
    exemple je mets 10 dans la structure mais il recalcul 9.75 comme l'editeur de
    ressources.

Discussions similaires

  1. [XL-2007] [VBA] comparaison et MFC
    Par nevpen dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/02/2015, 14h32
  2. [MFC] Mettre une fonte par défaut.
    Par pier* dans le forum MFC
    Réponses: 1
    Dernier message: 09/11/2007, 17h29
  3. [MFC] Augmenter la taille des fonts
    Par OverLorD34 dans le forum MFC
    Réponses: 3
    Dernier message: 06/04/2006, 10h28
  4. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  5. [MFC]Font et Antialiasing
    Par matazz dans le forum MFC
    Réponses: 16
    Dernier message: 26/01/2005, 16h53

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