Share via


La classe CFont

Encapsule une police GDI (Graphics Device Interface) Windows et fournit des fonctions membres pour la manipuler.

Syntaxe

class CFont : public CGdiObject

Membres

Constructeurs publics

Nom Description
CFont::CFont Construit un objet CFont.

Méthodes publiques

Nom Description
CFont::CreateFont Initialise une CFont avec les caractéristiques spécifiées.
CFont::CreateFontIndirect Initialise un CFont objet avec les caractéristiques fournies dans une LOGFONT structure.
CFont::CreatePointFont Initialise un CFont avec la hauteur spécifiée, mesurée en dixièmes d’un point et la police.
CFont::CreatePointFontIndirect Identique à ceci sauf CreateFontIndirect que la hauteur de police est mesurée en dixièmes d’un point plutôt qu’en unités logiques.
CFont::FromHandle Retourne un pointeur vers un CFont objet lorsqu’un Windows HFONTest donné.
CFont::GetLogFont Remplit une LOGFONT information sur la police logique attachée à l’objet CFont .

Opérateurs publics

Nom Description
CFont::operator HFONT Retourne le handle de police Windows GDI attaché à l’objet CFont .

Notes

Pour utiliser un CFont objet, construisez un CFont objet et attachez-y une police Windows avec CreateFont, ou CreateFontIndirectCreatePointFont, ou CreatePointFontIndirect, puis utilisez les fonctions membres de l’objet pour manipuler la police.

Les fonctions et CreatePointFontIndirect les CreatePointFont fonctions sont souvent plus faciles à utiliser que CreateFont ou CreateFontIndirect dans la mesure où elles effectuent la conversion pour la hauteur de la police d’une taille de point vers des unités logiques automatiquement.

Pour plus d’informations sur CFont, consultez Objets graphiques.

Hiérarchie d'héritage

CObject

CGdiObject

CFont

Spécifications

En-têteafxwin.h:

CFont::CFont

Construit un objet CFont.

CFont();

Notes

L’objet résultant doit être initialisé avec CreateFont, CreateFontIndirectou CreatePointFontCreatePointFontIndirect avant de pouvoir être utilisé.

Exemple

CFont font;

CFont::CreateFont

Initialise un CFont objet avec les caractéristiques spécifiées.

BOOL CreateFont(
    int nHeight,
    int nWidth,
    int nEscapement,
    int nOrientation,
    int nWeight,
    BYTE bItalic,
    BYTE bUnderline,
    BYTE cStrikeOut,
    BYTE nCharSet,
    BYTE nOutPrecision,
    BYTE nClipPrecision,
    BYTE nQuality,
    BYTE nPitchAndFamily,
    LPCTSTR lpszFacename);

Paramètres

nHeight
Spécifie la hauteur souhaitée (en unités logiques) de la police. Consultez le lfHeight membre de la LOGFONTstructure dans le Kit de développement logiciel (SDK) Windows pour obtenir une description. La valeur absolue de nHeight ne doit pas dépasser 16 384 unités d’appareil après sa conversion. Pour toutes les comparaisons de hauteur, le mappeur de police recherche la police la plus grande qui ne dépasse pas la taille demandée ou la police la plus petite si toutes les polices dépassent la taille demandée.

nWidth
Spécifie la largeur moyenne (en unités logiques) des caractères dans la police. Si nWidth la valeur est 0, le ratio d’aspect de l’appareil est mis en correspondance avec le ratio d’aspect de numérisation des polices disponibles pour trouver la correspondance la plus proche, qui est déterminée par la valeur absolue de la différence.

nEscapement
Spécifie l’angle (en unités de 0,1 degré) entre le vecteur d’échappement et l’axe x de la surface d’affichage. Le vecteur d’échappement est la ligne à travers les origines des premiers et derniers caractères d’une ligne. L’angle est mesuré dans le sens inverse des aiguilles d’une montre à partir de l’axe x. Pour plus d’informations, consultez le lfEscapement membre de la LOGFONT structure du Kit de développement logiciel (SDK) Windows.

nOrientation
Spécifie l’angle (en unités de 0,1 degrés) entre la ligne de base d’un caractère et l’axe x. L’angle est mesuré dans le sens inverse à partir de l’axe x pour les systèmes de coordonnées dans lesquels la direction y est vers le bas et dans le sens des aiguilles d’une montre à partir de l’axe x pour les systèmes de coordonnées dans lesquels la direction y est vers le haut.

nWeight
Spécifie l’épaisseur de police (en pixels manuscrits par 1 000). Pour plus d’informations, consultez le lfWeight membre de la LOGFONT structure du Kit de développement logiciel (SDK) Windows. Les valeurs décrites sont approximatives ; l’apparence réelle dépend de la police. Certaines polices n’ont que FW_NORMALdes FW_REGULARpoids, et FW_BOLD des poids. Si FW_DONTCARE elle est spécifiée, un poids par défaut est utilisé.

bItalic
Spécifie si la police est italique.

bUnderline
Spécifie si la police est soulignée.

cStrikeOut
Spécifie si les caractères de la police sont déconnectés. Spécifie une police de grève si elle est définie sur une valeur différente de zéro.

nCharSet
Spécifie le jeu de caractères de la policeSee le lfCharSet membre dans la LOGFONT structure du Kit de développement logiciel (SDK) Windows pour obtenir une liste de valeurs.

Le jeu de caractères OEM dépend du système.

Les polices avec d’autres jeux de caractères peuvent exister dans le système. Une application qui utilise une police avec un jeu de caractères inconnu ne doit pas tenter de traduire ou d’interpréter des chaînes qui doivent être rendues avec cette police. Au lieu de cela, les chaînes doivent être transmises directement au pilote de périphérique de sortie.

Le mappeur de police n’utilise pas la DEFAULT_CHARSET valeur. Une application peut utiliser cette valeur pour autoriser le nom et la taille d’une police à décrire entièrement la police logique. Si une police portant le nom spécifié n’existe pas, une police de n’importe quel jeu de caractères peut être remplacée par la police spécifiée. Pour éviter les résultats inattendus, les applications doivent utiliser la DEFAULT_CHARSET valeur avec parcimonie.

nOutPrecision
Spécifie la précision de sortie souhaitée. La précision de sortie définit la précision de la sortie qui doit correspondre à la hauteur, à la largeur, à l’orientation des caractères, à l’échappement et à la hauteur de la police demandée. Consultez le lfOutPrecision membre de la LOGFONT structure du Kit de développement logiciel (SDK) Windows pour obtenir une liste de valeurs et plus d’informations.

nClipPrecision
Spécifie la précision de découpage souhaitée. La précision de découpage définit comment découper des caractères partiellement en dehors de la zone de découpage. Consultez le lfClipPrecision membre de la LOGFONT structure dans le Kit de développement logiciel (SDK) Windows pour obtenir la liste des valeurs.

Pour utiliser une police en lecture seule incorporée, une application doit spécifier CLIP_ENCAPSULATE.

Pour obtenir une rotation cohérente de l’appareil, de TrueType et des polices vectorielles, une application peut utiliser l’opérateur OR au niveau du bit (|) pour combiner la CLIP_LH_ANGLES valeur avec l’une des autres nClipPrecision valeurs. Si le CLIP_LH_ANGLES bit est défini, la rotation de toutes les polices varie selon que l’orientation du système de coordonnées est gaucher ou droitier. (Pour plus d’informations sur l’orientation des systèmes de coordonnées, consultez la description du nOrientation paramètre.) Si CLIP_LH_ANGLES elle n’est pas définie, les polices de l’appareil pivotent toujours dans le sens inverse, mais la rotation d’autres polices dépend de l’orientation du système de coordonnées.

nQuality
Spécifie la qualité de sortie de la police, qui définit avec soin le GDI qui doit tenter de faire correspondre les attributs de police logique à ceux d’une police physique réelle. Consultez le lfQuality membre de la LOGFONT structure dans le Kit de développement logiciel (SDK) Windows pour obtenir la liste des valeurs.

nPitchAndFamily
Spécifie la hauteur et la famille de la police. Consultez le lfPitchAndFamily membre de la LOGFONT structure du Kit de développement logiciel (SDK) Windows pour obtenir une liste de valeurs et plus d’informations.

lpszFacename
Pointeur CString vers une chaîne terminée par null qui spécifie le nom de police de la police. La longueur de cette chaîne ne doit pas dépasser 30 caractères. La fonction Windows EnumFontFamilies peut être utilisée pour énumérer toutes les polices actuellement disponibles. Si lpszFacename c’est NULLle cas, le GDI utilise une police indépendante de l’appareil.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

La police peut ensuite être sélectionnée comme police pour n’importe quel contexte d’appareil.

La CreateFont fonction ne crée pas de police Windows GDI. Il sélectionne simplement la correspondance la plus proche parmi les polices physiques disponibles pour l’IGD.

Les applications peuvent utiliser les paramètres par défaut pour la plupart des paramètres lors de la création d’une police logique. Les paramètres qui doivent toujours être donnés des valeurs spécifiques sont nHeight et lpszFacename. Si nHeight et lpszFacename ne sont pas définis par l’application, la police logique créée dépend de l’appareil.

Lorsque vous avez terminé avec l’objet CFont créé par la CreateFont fonction, utilisez CDC::SelectObject cette option pour sélectionner une police différente dans le contexte de l’appareil, puis supprimez l’objet CFont qui n’est plus nécessaire.

Exemple

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

// Initializes a CFont object with the specified characteristics.
CFont font;
VERIFY(font.CreateFont(
    12,                       // nHeight
    0,                        // nWidth
    0,                        // nEscapement
    0,                        // nOrientation
    FW_NORMAL,                // nWeight
    FALSE,                    // bItalic
    FALSE,                    // bUnderline
    0,                        // cStrikeOut
    ANSI_CHARSET,             // nCharSet
    OUT_DEFAULT_PRECIS,       // nOutPrecision
    CLIP_DEFAULT_PRECIS,      // nClipPrecision
    DEFAULT_QUALITY,          // nQuality
    DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily
    _T("Arial")));            // lpszFacename

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font.  Delete the font object.
font.DeleteObject();

CFont::CreateFontIndirect

Initialise un CFont objet avec les caractéristiques fournies dans une LOGFONTstructure.

BOOL CreateFontIndirect(const LOGFONT* lpLogFont);

Paramètres

lpLogFont
Pointe vers une LOGFONT structure qui définit les caractéristiques de la police logique.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

La police peut ensuite être sélectionnée comme police active pour n’importe quel appareil.

Cette police a les caractéristiques spécifiées dans la LOGFONT structure. Lorsque la police est sélectionnée à l’aide de la CDC::SelectObject fonction membre, le mappeur de police GDI tente de faire correspondre la police logique à une police physique existante. Si le mappeur de polices ne parvient pas à trouver une correspondance exacte pour la police logique, il fournit une autre police dont les caractéristiques correspondent autant que possible aux caractéristiques demandées.

Lorsque vous n’avez plus besoin de l’objet CFont créé par la CreateFontIndirect fonction, utilisez CDC::SelectObject pour sélectionner une police différente dans le contexte de l’appareil, puis supprimez l’objet CFont qui n’est plus nécessaire.

Exemple

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

// Initializes a CFont object with the characteristics given
// in a LOGFONT structure.
CFont font;
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT)); // zero out structure
lf.lfHeight = 12;                // request a 12-pixel-height font
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE,
           _T("Arial"), 7);           // request a face name "Arial"
VERIFY(font.CreateFontIndirect(&lf)); // create the font

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font.DeleteObject();

CFont::CreatePointFont

Cette fonction offre un moyen simple de créer une police d’une police de type et d’une taille de point spécifiées.

BOOL CreatePointFont(
    int nPointSize,
    LPCTSTR lpszFaceName,
    CDC* pDC = NULL);

Paramètres

nPointSize
Hauteur de police demandée en dixièmes d’un point. (Par exemple, passez 120 pour demander une police de 12 points.)

lpszFaceName
Pointeur CString vers une chaîne terminée par null qui spécifie le nom de police de la police. La longueur de cette chaîne ne doit pas dépasser 30 caractères. La fonction Windows EnumFontFamilies peut être utilisée pour énumérer toutes les polices actuellement disponibles. Si lpszFaceName c’est NULLle cas, le GDI utilise une police indépendante de l’appareil.

pDC
Pointeur vers l’objet CDC à utiliser pour convertir la hauteur en nPointSize unités logiques. Si NULL, un contexte d’appareil d’écran est utilisé pour la conversion.

Valeur de retour

Différent de zéro s’il réussit, sinon 0.

Notes

Elle convertit automatiquement la hauteur en nPointSize unités logiques à l’aide de l’objet CDC pointé par pDC.

Une fois l’objet CFont créé par la CreatePointFont fonction, sélectionnez d’abord la police hors du contexte de l’appareil, puis supprimez l’objet CFont .

Exemple

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.

CClientDC dc(this);

CFont font;
VERIFY(font.CreatePointFont(120, _T("Arial"), &dc));

// Do something with the font just created...
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font.DeleteObject();

CFont::CreatePointFontIndirect

Cette fonction est identique à CreateFontIndirect celle que le membre de l’objet lfHeightLOGFONT est interprété en dixièmes d’un point plutôt qu’en unités d’appareil.

BOOL CreatePointFontIndirect(
    const LOGFONT* lpLogFont,
    CDC* pDC = NULL);

Paramètres

lpLogFont
Pointe vers une LOGFONT structure qui définit les caractéristiques de la police logique. Le lfHeight membre de la LOGFONT structure est mesuré en dixièmes d’un point plutôt qu’en unités logiques. (Par exemple, définissez lfHeight sur 120 pour demander une police à 12 points.)

pDC
Pointeur vers l’objet CDC à utiliser pour convertir la hauteur en lfHeight unités logiques. Si NULL, un contexte d’appareil d’écran est utilisé pour la conversion.

Valeur de retour

Différent de zéro s’il réussit, sinon 0.

Notes

Cette fonction convertit automatiquement la hauteur en lfHeight unités logiques à l’aide de l’objet CDC pointé vers pDC Windows avant de passer la LOGFONT structure sur Windows.

Une fois l’objet CFont créé par la CreatePointFontIndirect fonction, sélectionnez d’abord la police hors du contexte de l’appareil, puis supprimez l’objet CFont .

Exemple

// The code fragment shows how to create a font object,
// select the font object into a DC (device context) for text
// drawing, and finally delete the font object.
LOGFONT lf;

// clear out structure.
memset(&lf, 0, sizeof(LOGFONT));

// request a 12-pixel-height font
lf.lfHeight = 120;

// request a face name "Arial".
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);

CClientDC dc(this);

CFont font;
VERIFY(font.CreatePointFontIndirect(&lf, &dc));

// Do something with the font just created...
CFont *def_font = dc.SelectObject(&font);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font.DeleteObject();

CFont::FromHandle

Retourne un pointeur vers un CFont objet lorsqu’un HFONT handle est attribué à un objet de police GDI Windows.

static CFont* PASCAL FromHandle(HFONT hFont);

Paramètres

hFont
Handle HFONT vers une police Windows.

Valeur de retour

Pointeur vers un CFont objet en cas de réussite ; sinon NULL.

Notes

Si un CFont objet n’est pas déjà attaché au handle, un objet temporaire CFont est créé et attaché. Cet objet temporaire CFont est valide uniquement jusqu’à la prochaine fois que l’application a un temps d’inactivité dans sa boucle d’événements, auquel cas tous les objets graphiques temporaires sont supprimés. Une autre façon de dire ceci est que l’objet temporaire est valide uniquement pendant le traitement d’un message de fenêtre.

Exemple

// The code fragment shows how to create a font object using
// Windows API CreateFontIndirect(), convert the HFONT to a
// CFont* before selecting the font object into a DC (device
// context) for text drawing, and finally delete the font object.

// Initialize a CFont object with the characteristics given
// in a LOGFONT structure.
LOGFONT lf;

// clear out structure
memset(&lf, 0, sizeof(LOGFONT));
// request a 12-pixel-height font
lf.lfHeight = 12;
// request a face name "Arial"
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);
// create the font
HFONT hfont = ::CreateFontIndirect(&lf);

// Convert the HFONT to CFont*.
CFont *pfont = CFont::FromHandle(hfont);

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(pfont);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
::DeleteObject(hfont);

CFont::GetLogFont

Appelez cette fonction pour récupérer une copie de la LOGFONT structure pour CFont.

int GetLogFont(LOGFONT* pLogFont);

Paramètres

pLogFont
Pointeur vers la LOGFONT structure pour recevoir les informations de police.

Valeur de retour

Différent de zéro si la fonction réussit, sinon 0.

Exemple

// The code fragment shows how to retrieve a copy of the
// LOGFONT structure for a currently selected font of a window.

CFont *pFont = pWnd->GetFont();
if (NULL != pFont)
{
   LOGFONT lf;
   pFont->GetLogFont(&lf);
   TRACE(_T("Typeface name of font = %s\n"), lf.lfFaceName);
}

CFont::operator HFONT

Utilisez cet opérateur pour obtenir le handle GDI Windows de la police attachée à l’objet CFont .

operator HFONT() const;

Valeur de retour

Handle de l’objet de police Windows GDI attaché CFont en cas de réussite ; sinon NULL.

Notes

Étant donné que cet opérateur est automatiquement utilisé pour les conversions de polices et de CFont texte, vous pouvez passer des objets à des fonctions attendues CFontHFONT.

Pour plus d’informations sur l’utilisation d’objets graphiques, consultez Objets graphiques dans le Kit de développement logiciel (SDK) Windows.

Exemple

// The code fragment shows the usage of CFont::operator HFONT.

// Initialize a CFont object with the characteristics given
// in a LOGFONT structure.
LOGFONT lf;

// clear out structure
memset(&lf, 0, sizeof(LOGFONT));

// request a 12-pixel-height font
lf.lfHeight = 12;

// request a face name "Arial"
_tcsncpy_s(lf.lfFaceName, LF_FACESIZE, _T("Arial"), 7);

CFont font1;
font1.CreateFontIndirect(&lf); // create the font

// CFont::operator HFONT automatically converts font1 from
// CFont* to HFONT.
CFont *font2 = CFont::FromHandle(font1);

// Do something with the font just created...
CClientDC dc(this);
CFont *def_font = dc.SelectObject(font2);
dc.TextOut(5, 5, _T("Hello"), 5);
dc.SelectObject(def_font);

// Done with the font. Delete the font object.
font1.DeleteObject();

Voir aussi

Exemple MFC HIERSVR
CGdiObject Classe
Graphique hiérarchique