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 HFONT est 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 CreateFontIndirect
CreatePointFont
, 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
CFont
Spécifications
En-tête : afxwin.h
CFont::CFont
Construit un objet CFont
.
CFont();
Notes
L’objet résultant doit être initialisé avec CreateFont
, CreateFontIndirect
ou CreatePointFont
CreatePointFontIndirect
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 LOGFONT
structure 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_NORMAL
des FW_REGULAR
poids, 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 NULL
le 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 LOGFONT
structure.
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 NULL
le 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 lfHeight
LOGFONT
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 CFont
HFONT
.
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