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

Windows Discussion :

police de caractères


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 30
    Points : 26
    Points
    26
    Par défaut police de caractères
    Bonjour à tous!

    J'aimerai déterminer la longueur en pixel d'un string une fois qu'il sera affiché sur l'écran (afin de faire des colonnes), et l'afficher effectivement après.

    Or pour le dessiner, j'utilise un 'HFONT' (créé par CreateFont), en tapant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectObject(hdc, police);
    Et pour obtenir une valeur convenable de la longueur, j'effectue une conversion en 'TEXTMETRIC', puis je tape:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbreCaractèresDuString*tm.tmAveCharWidth*1.5
    Mais la conversion est problématique car je ne sais pas passer autrement que par un 'Device Context', ce qui est fastidieux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    PAINTSTRUCT ps;
    TEXTMETRIC tm;
    HDC hdc = BeginPaint(hwnd, &ps);
    SelectObject(hdc, police);
    GetTextMetrics (hdc, &tm);
        // utilisation du TEXTMETRIC
    EndPaint(hwnd, &ps);
    Quelqu'un peut-il m'indiquer une méthode plus simple ?

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu peux utiliser ça pour avoir la taille exacte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SIZE taille;
    GetTextExtentPoint32(hdc, chaine, strlen(chaine), &taille);
    Je ne comprends pas en quoi le HDC te pose problème, puisque de toute façon tu en as déjà un.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2006
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    Le problème pour le HDC c'est que je l'appelle dans différentes méthodes où il n'y a pas forcément du dessin à faire (initialisation)...
    Il y a surement moyen que je m'arrange autrement dans la structure de mon programme, je vais voir ça...
    En tout cas merci.

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

Discussions similaires

  1. [MFC] Comment personnaliser sa police de caractères ?
    Par Guybrush113 dans le forum MFC
    Réponses: 11
    Dernier message: 26/05/2004, 07h29
  2. Police de caractère
    Par AlDum dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/11/2003, 00h21
  3. [API Windows] Polices de caractères disponibles
    Par bebeours dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/11/2003, 08h28
  4. Polices de caractères sous Windows
    Par goto dans le forum API, COM et SDKs
    Réponses: 24
    Dernier message: 04/11/2003, 15h50
  5. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/05/2002, 17h29

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