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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  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