Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Bevat een GDI-lettertype (Windows Graphics Device Interface) en biedt lidfuncties voor het bewerken van het lettertype.
Syntaxis
class CFont : public CGdiObject
Leden
Openbare constructors
| Naam | Beschrijving |
|---|---|
CFont::CFont |
Maakt een CFont-object. |
Openbare methoden
| Naam | Beschrijving |
|---|---|
CFont::CreateFont |
Initialiseert een CFont met de opgegeven kenmerken. |
CFont::CreateFontIndirect |
Initialiseert een CFont object met de kenmerken die in een LOGFONT structuur zijn opgegeven. |
CFont::CreatePointFont |
Initialiseert een CFont met de opgegeven hoogte, gemeten in tienden van een punt en het lettertype. |
CFont::CreatePointFontIndirect |
Hetzelfde als CreateFontIndirect behalve dat de tekenhoogte wordt gemeten in tienden van een punt in plaats van logische eenheden. |
CFont::FromHandle |
Retourneert een aanwijzer naar een CFont object wanneer een Windows HFONTwordt gegeven. |
CFont::GetLogFont |
Vult een LOGFONT met informatie over het logische lettertype dat aan het CFont object is gekoppeld. |
Openbare operators
| Naam | Beschrijving |
|---|---|
CFont::operator HFONT |
Retourneert de Windows GDI-lettertypegreep die aan het CFont object is gekoppeld. |
Opmerkingen
Als u een CFont object wilt gebruiken, maakt u een CFont object en voegt u er een Windows-lettertype aan toe met CreateFont, CreateFontIndirectof CreatePointFont, of CreatePointFontIndirect, en gebruikt u vervolgens de lidfuncties van het object om het lettertype te bewerken.
De CreatePointFont functies en CreatePointFontIndirect functies zijn vaak gemakkelijker te gebruiken dan CreateFont of CreateFontIndirect omdat ze de conversie uitvoeren voor de hoogte van het lettertype van een puntgrootte naar logische eenheden automatisch.
Zie CFont voor meer informatie.
Overnamehiërarchie
CFont
Behoeften
koptekst:afxwin.h
CFont::CFont
Maakt een CFont-object.
CFont();
Opmerkingen
Het resulterende object moet worden geïnitialiseerd metCreateFont, CreateFontIndirectof CreatePointFontCreatePointFontIndirectvoordat het kan worden gebruikt.
Voorbeeld
CFont font;
CFont::CreateFont
Initialiseert een CFont object met de opgegeven kenmerken.
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);
Parameterwaarden
nHeight
Hiermee geeft u de gewenste hoogte (in logische eenheden) van het lettertype. Zie het lfHeight lid van de LOGFONT structuur in de Windows SDK voor een beschrijving. De absolute waarde van nHeight mag niet groter zijn dan 16.384 apparaateenheden nadat deze zijn geconverteerd. Voor alle hoogtevergelijkingen zoekt de lettertypetoewijzer naar het grootste lettertype dat niet groter is dan de aangevraagde grootte of het kleinste lettertype als alle lettertypen de aangevraagde grootte overschrijden.
nWidth
Hiermee geeft u de gemiddelde breedte (in logische eenheden) van tekens in het lettertype. Als nWidth dit 0 is, wordt de hoogte-breedteverhouding van het apparaat vergeleken met de hoogte-breedteverhouding van de beschikbare lettertypen om de dichtstbijzijnde overeenkomst te vinden, die wordt bepaald door de absolute waarde van het verschil.
nEscapement
Hiermee geeft u de hoek (in eenheden van 0,1 graden) tussen de escapementvector en de x-as van het weergaveoppervlak op. De escapementvector is de lijn door de oorsprong van de eerste en laatste tekens op een regel. De hoek wordt linksom gemeten vanaf de x-as. Zie het lfEscapement lid in de LOGFONT structuur in de Windows SDK voor meer informatie.
nOrientation
Hiermee geeft u de hoek (in eenheden van 0,1 graden) tussen de basislijn van een teken en de x-as. De hoek wordt linksom gemeten vanaf de x-as voor coördinaatsystemen waarin de y-richting omlaag en rechts van de x-as is voor coördinatensystemen waarin de y-richting omhoog is.
nWeight
Hiermee geeft u het lettertypegewicht (in inkt pixels per 1000). Zie het lfWeight lid in de LOGFONT structuur in de Windows SDK voor meer informatie. De beschreven waarden zijn bij benadering; het werkelijke uiterlijk is afhankelijk van het lettertype. Sommige lettertypen hebben alleen FW_NORMAL, FW_REGULARen FW_BOLD gewichten. Als FW_DONTCARE dit is opgegeven, wordt een standaardgewicht gebruikt.
bItalic
Hiermee geeft u op of het lettertype cursief is.
bUnderline
Hiermee geeft u op of het lettertype is onderstreept.
cStrikeOut
Hiermee geeft u op of tekens in het lettertype worden uitgevallen. Hiermee geeft u een doorhalend lettertype op als dit is ingesteld op een niet-nulwaarde.
nCharSet
Hiermee geeft u de tekenset van het lettertypeSee het lfCharSet lid in de LOGFONT structuur in de Windows SDK voor een lijst met waarden.
De OEM-tekenset is systeemafhankelijk.
Lettertypen met andere tekensets kunnen aanwezig zijn in het systeem. Een toepassing die gebruikmaakt van een lettertype met een onbekende tekenset, mag geen tekenreeksen vertalen of interpreteren die met dat lettertype moeten worden weergegeven. In plaats daarvan moeten de tekenreeksen rechtstreeks worden doorgegeven aan het stuurprogramma van het uitvoerapparaat.
De lettertypetoewijzer gebruikt de DEFAULT_CHARSET waarde niet. Een toepassing kan deze waarde gebruiken om de naam en grootte van een lettertype toe te staan om het logische lettertype volledig te beschrijven. Als er geen lettertype met de opgegeven naam bestaat, kan een lettertype uit een tekenset worden vervangen door het opgegeven lettertype. Om onverwachte resultaten te voorkomen, moeten toepassingen de DEFAULT_CHARSET waarde spaarzaam gebruiken.
nOutPrecision
Hiermee geeft u de gewenste uitvoerprecisie. De uitvoerprecisie bepaalt hoe nauwkeurig de uitvoer moet overeenkomen met de hoogte, breedte, tekenstand, escapement en toonhoogte van het aangevraagde lettertype. Zie het lfOutPrecision lid in de LOGFONT structuur in de Windows SDK voor een lijst met waarden en meer informatie.
nClipPrecision
Hiermee geeft u de gewenste precisie van de knip. De precisie van de knipsel bepaalt hoe u tekens uit een deel van het knipgebied kunt knippen. Zie het lfClipPrecision lid in de LOGFONT structuur in de Windows SDK voor een lijst met waarden.
Als u een ingesloten lettertype met het kenmerk Alleen-lezen wilt gebruiken, moet een toepassing opgeven CLIP_ENCAPSULATE.
Voor een consistente rotatie van apparaat-, TrueType- en vectorlettertypen kan een toepassing de bitwise OR-operator (|) gebruiken om de CLIP_LH_ANGLES waarde te combineren met een van de andere nClipPrecision waarden. Als de CLIP_LH_ANGLES bit is ingesteld, is de draaiing voor alle lettertypen afhankelijk van of de stand van het coördinaatsysteem links of rechtshandig is. Zie de beschrijving van de nOrientation parameter voor meer informatie over de oriëntatie van coördinatensystemen. Als CLIP_LH_ANGLES dit niet is ingesteld, draaien apparaatlettertypen altijd tegen de klok mee, maar de draaiing van andere lettertypen is afhankelijk van de afdrukstand van het coördinatensysteem.
nQuality
Hiermee geeft u de uitvoerkwaliteit van het lettertype op, waarmee wordt gedefinieerd hoe zorgvuldig de GDI moet proberen de kenmerken van het logische lettertype te koppelen aan die van een werkelijk fysiek lettertype. Zie het lfQuality lid in de LOGFONT structuur in de Windows SDK voor een lijst met waarden.
nPitchAndFamily
Hiermee geeft u de pitch en familie van het lettertype. Zie het lfPitchAndFamily lid in de LOGFONT structuur in de Windows SDK voor een lijst met waarden en meer informatie.
lpszFacename
Een CString of aanwijzer naar een tekenreeks met null-beëindiging waarmee de naam van het lettertype wordt opgegeven. De lengte van deze tekenreeks mag niet langer zijn dan 30 tekens. De Windows-functie EnumFontFamilies kan worden gebruikt om alle momenteel beschikbare lettertypen op te sommen. Als lpszFacename dat het is NULL, gebruikt de GDI een apparaatonafhankelijk lettertype.
Retourwaarde
Niet-nul indien geslaagd; anders 0.
Opmerkingen
Het lettertype kan vervolgens worden geselecteerd als het lettertype voor elke apparaatcontext.
De CreateFont functie maakt geen nieuw Windows GDI-lettertype. Het selecteert slechts de dichtstbijzijnde overeenkomst uit de fysieke lettertypen die beschikbaar zijn voor de GDI.
Toepassingen kunnen de standaardinstellingen voor de meeste parameters gebruiken bij het maken van een logisch lettertype. De parameters die altijd specifieke waarden moeten krijgen, zijn nHeight en lpszFacename. Als nHeight en lpszFacename niet zijn ingesteld door de toepassing, is het logische lettertype dat wordt gemaakt, afhankelijk van het apparaat.
Wanneer u klaar bent met het CFont object dat door de CreateFont functie is gemaakt, kunt CDC::SelectObject u een ander lettertype selecteren in de apparaatcontext en vervolgens het CFont object verwijderen dat niet meer nodig is.
Voorbeeld
// 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
Initialiseert een CFont object met de kenmerken die in een LOGFONT structuur zijn opgegeven.
BOOL CreateFontIndirect(const LOGFONT* lpLogFont);
Parameterwaarden
lpLogFont
Verwijst naar een LOGFONT structuur die de kenmerken van het logische lettertype definieert.
Retourwaarde
Niet-nul indien geslaagd; anders 0.
Opmerkingen
Het lettertype kan vervolgens worden geselecteerd als het huidige lettertype voor elk apparaat.
Dit lettertype heeft de kenmerken die zijn opgegeven in de LOGFONT structuur. Wanneer het lettertype is geselecteerd met behulp van de CDC::SelectObject lidfunctie, probeert de GDI-lettertypetoewijzer het logische lettertype te koppelen aan een bestaand fysiek lettertype. Als de lettertypetoewijzing geen exacte overeenkomst voor het logische lettertype kan vinden, biedt het een alternatief lettertype waarvan de kenmerken overeenkomen met zoveel mogelijk van de aangevraagde kenmerken.
Wanneer u het CFont object dat door de CreateFontIndirect functie is gemaakt niet meer nodig hebt, selecteert CDC::SelectObject u een ander lettertype in de apparaatcontext en verwijdert u vervolgens het CFont object dat niet meer nodig is.
Voorbeeld
// 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
Deze functie biedt een eenvoudige manier om een lettertype van een opgegeven lettertype en puntgrootte te maken.
BOOL CreatePointFont(
int nPointSize,
LPCTSTR lpszFaceName,
CDC* pDC = NULL);
Parameterwaarden
nPointSize
Aangevraagde tekenhoogte in tienden van een punt. (Geef bijvoorbeeld 120 door om een lettertype van 12 punten aan te vragen.)
lpszFaceName
Een CString of aanwijzer naar een tekenreeks met null-beëindiging waarmee de naam van het lettertype wordt opgegeven. De lengte van deze tekenreeks mag niet langer zijn dan 30 tekens. De Windows-functie EnumFontFamilies kan worden gebruikt om alle momenteel beschikbare lettertypen op te sommen. Als lpszFaceName dat het is NULL, gebruikt de GDI een apparaatonafhankelijk lettertype.
pDC
Aanwijzer naar het CDC object dat moet worden gebruikt om de hoogte nPointSize te converteren naar logische eenheden. Als NULLer een schermapparaatcontext wordt gebruikt voor de conversie.
Retourwaarde
Nonzero als dit lukt, anders 0.
Opmerkingen
De hoogte nPointSize wordt automatisch geconverteerd naar logische eenheden met behulp van het CDC-object waarnaar pDCwordt verwezen.
Wanneer u klaar bent met het CFont object dat door de CreatePointFont functie is gemaakt, selecteert u eerst het lettertype buiten de apparaatcontext en verwijdert u het CFont object.
Voorbeeld
// 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
Deze functie is hetzelfde als CreateFontIndirect behalve dat het lid van de lfHeightLOGFONT functie wordt geïnterpreteerd in tienden van een punt in plaats van apparaateenheden.
BOOL CreatePointFontIndirect(
const LOGFONT* lpLogFont,
CDC* pDC = NULL);
Parameterwaarden
lpLogFont
Verwijst naar een LOGFONT structuur die de kenmerken van het logische lettertype definieert. Het lfHeight lid van de LOGFONT structuur wordt gemeten in tienden van een punt in plaats van logische eenheden. (Stel bijvoorbeeld in op lfHeight 120 om een lettertype van 12 punten aan te vragen.)
pDC
Aanwijzer naar het CDC object dat moet worden gebruikt om de hoogte lfHeight te converteren naar logische eenheden. Als NULLer een schermapparaatcontext wordt gebruikt voor de conversie.
Retourwaarde
Nonzero als dit lukt, anders 0.
Opmerkingen
Met deze functie wordt de hoogte lfHeight automatisch geconverteerd naar logische eenheden met behulp van het CDC object waarnaar wordt verwezen voordat pDC de LOGFONT structuur wordt doorgegeven aan Windows.
Wanneer u klaar bent met het CFont object dat door de CreatePointFontIndirect functie is gemaakt, selecteert u eerst het lettertype buiten de apparaatcontext en verwijdert u het CFont object.
Voorbeeld
// 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
Retourneert een aanwijzer naar een CFont object wanneer een HFONT ingang wordt gegeven aan een Windows GDI-lettertypeobject.
static CFont* PASCAL FromHandle(HFONT hFont);
Parameterwaarden
hFont
Een HFONT ingang naar een Windows-lettertype.
Retourwaarde
Een aanwijzer naar een CFont object als dit lukt; anders NULL.
Opmerkingen
Als er CFont nog geen object aan de ingang is gekoppeld, wordt er een tijdelijk CFont object gemaakt en gekoppeld. Dit tijdelijke CFont object is alleen geldig tot de volgende keer dat de toepassing inactief is in de gebeurtenislus, waarna alle tijdelijke grafische objecten worden verwijderd. Een andere manier om dit te zeggen is dat het tijdelijke object alleen geldig is tijdens de verwerking van één vensterbericht.
Voorbeeld
// 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
Roep deze functie aan om een kopie van de LOGFONT structuur voor CFontop te halen.
int GetLogFont(LOGFONT* pLogFont);
Parameterwaarden
pLogFont
Wijs de LOGFONT structuur aan om de lettertypegegevens te ontvangen.
Retourwaarde
Niet-nul als de functie slaagt, anders 0.
Voorbeeld
// 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
Gebruik deze operator om de Windows GDI-ingang op te halen van het lettertype dat aan het CFont object is gekoppeld.
operator HFONT() const;
Retourwaarde
De ingang van het Windows GDI-lettertypeobject waaraan is gekoppeld CFont als dit lukt; anders NULL.
Opmerkingen
Omdat deze operator automatisch wordt gebruikt voor conversies van CFontlettertypen en tekst, kunt u objecten doorgeven CFont aan functies die verwachten HFONT.
Zie Afbeeldingsobjecten in de Windows SDK voor meer informatie over het gebruik van grafische objecten.
Voorbeeld
// 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();