Класс КфонтCFont Class

Инкапсулирует шрифт интерфейса графических устройств Windows (GDI) и предоставляет функции-члены для манипулирования этим шрифтом.Encapsulates a Windows graphics device interface (GDI) font and provides member functions for manipulating the font.

СинтаксисSyntax

class CFont : public CGdiObject

ЧленыMembers

Открытые конструкторыPublic Constructors

nameName ОписаниеDescription
Кфонт:: КфонтCFont::CFont Формирует объект CFont.Constructs a CFont object.

Открытые методыPublic Methods

nameName ОписаниеDescription
Кфонт:: CreateFontCFont::CreateFont Инициализирует объект CFont с указанными характеристиками.Initializes a CFont with the specified characteristics.
Кфонт:: CreateFontIndirectCFont::CreateFontIndirect Инициализирует CFont объект с характеристиками, заданными в LOGFONT структуре.Initializes a CFont object with the characteristics given in a LOGFONT structure.
Кфонт:: КреатепоинтфонтCFont::CreatePointFont Инициализирует объект CFont с указанной высотой, измеряемой в десятых долях от точки, и гарнитура.Initializes a CFont with the specified height, measured in tenths of a point, and typeface.
Кфонт:: КреатепоинтфонтиндиректCFont::CreatePointFontIndirect То же, что и CreateFontIndirect за исключением того, что высота шрифта измеряется в десятых долях точки, а не на логических единицах.Same as CreateFontIndirect except that the font height is measured in tenths of a point rather than logical units.
Кфонт:: FromHandleCFont::FromHandle Возвращает указатель на CFont объект при наличии хфонта Windows.Returns a pointer to a CFont object when given a Windows HFONT.
Кфонт:: ЖетлогфонтCFont::GetLogFont Заполняет LOGFONT сведениями о логическом шрифте, присоединенном к CFont объекту.Fills a LOGFONT with information about the logical font attached to the CFont object.

Открытые операторыPublic Operators

ИмяName ОписаниеDescription
Кфонт:: operator ХФОНТCFont::operator HFONT Возвращает маркер шрифта Windows GDI, присоединенный к CFont объекту.Returns the Windows GDI font handle attached to the CFont object.

КомментарииRemarks

Чтобы использовать CFont объект, создайте CFont объект и присоедините к нему шрифт Windows с помощью CreateFont, CreateFontIndirect, креатепоинтфонтили креатепоинтфонтиндирект, а затем используйте функции-члены объекта для управления шрифтом.To use a CFont object, construct a CFont object and attach a Windows font to it with CreateFont, CreateFontIndirect, CreatePointFont, or CreatePointFontIndirect, and then use the object's member functions to manipulate the font.

CreatePointFontФункции и CreatePointFontIndirect часто проще в использовании, чем CreateFont или, CreateFontIndirect так как они автоматически выполняют преобразование высоты шрифта из кегля в логические устройства.The CreatePointFont and CreatePointFontIndirect functions are often easier to use than CreateFont or CreateFontIndirect since they do the conversion for the height of the font from a point size to logical units automatically.

Дополнительные сведения о см CFont . в разделе графические объекты.For more information on CFont, see Graphic Objects.

Иерархия наследованияInheritance Hierarchy

CObjectCObject

CGdiObjectCGdiObject

CFont

ТребованияRequirements

Заголовок: afxwin.hHeader: afxwin.h

Кфонт:: КфонтCFont::CFont

Формирует объект CFont.Constructs a CFont object.

CFont();

КомментарииRemarks

Полученный объект должен быть инициализирован с помощью CreateFont , CreateFontIndirect , CreatePointFont или CreatePointFontIndirect до его использования.The resulting object must be initialized with CreateFont, CreateFontIndirect, CreatePointFont, or CreatePointFontIndirect before it can be used.

ПримерExample

CFont font;

Кфонт:: CreateFontCFont::CreateFont

Инициализирует CFont объект с указанными характеристиками.Initializes a CFont object with the specified characteristics.

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);

ПараметрыParameters

нхеигхтnHeight
Задает желаемую высоту (в логических единицах) шрифта.Specifies the desired height (in logical units) of the font. Описание см lfHeight . в описании члена структуры LOGFONTв Windows SDK.See the lfHeight member of the LOGFONTstructure in the Windows SDK for a description. После преобразования абсолютное значение нхеигхт не должно превышать 16 384 единиц устройства.The absolute value of nHeight must not exceed 16,384 device units after it is converted. Для всех сравнений высоты, средство сопоставления шрифтов ищет самый крупный шрифт, который не превышает запрошенный размер, или наименьший шрифт, если длина всех шрифтов превышает запрошенный размер.For all height comparisons, the font mapper looks for the largest font that does not exceed the requested size or the smallest font if all the fonts exceed the requested size.

нвидсnWidth
Задает среднюю ширину (в логических единицах) символов в шрифте.Specifies the average width (in logical units) of characters in the font. Если нвидс имеет значение 0, пропорции устройства будут сопоставлены с пропорциями цифр в доступных шрифтах, чтобы найти ближайшее соответствие, которое определяется абсолютным значением разницы.If nWidth is 0, the aspect ratio of the device will be matched against the digitization aspect ratio of the available fonts to find the closest match, which is determined by the absolute value of the difference.

нескапементnEscapement
Задает угол (в единицах 0,1 градусов) между вектором экранирования и осью x поверхности отображения.Specifies the angle (in 0.1-degree units) between the escapement vector and the x-axis of the display surface. Вектором экранирования называется линия, посвященная источникам первого и последнего символов в строке.The escapement vector is the line through the origins of the first and last characters on a line. Угол измеряется против часовой стрелки от оси x.The angle is measured counterclockwise from the x-axis. Дополнительные сведения см. в описании lfEscapement члена LOGFONT структуры в Windows SDK.See the lfEscapement member in the LOGFONT structure in the Windows SDK for more information.

нориентатионnOrientation
Задает угол (в единицах 0,1 градусов) между базовыми показателями символа и осью x.Specifies the angle (in 0.1-degree units) between the baseline of a character and the x-axis. Угол измеряется против часовой стрелки от оси x для систем координат, в которых y-направление не работает и по часовой стрелке от оси x для систем координат, в которых y-направление вверх.The angle is measured counterclockwise from the x-axis for coordinate systems in which the y-direction is down and clockwise from the x-axis for coordinate systems in which the y-direction is up.

нвеигхтnWeight
Задает насыщенность шрифта (в рисуемых пикселах на 1000).Specifies the font weight (in inked pixels per 1000). Дополнительные сведения см. в описании элемента лфвеигхт в LOGFONT структуре в Windows SDK.See the lfWeight member in the LOGFONT structure in the Windows SDK for more information. Описанные значения являются приблизительными; фактический внешний вид зависит от шрифта.The described values are approximate; the actual appearance depends on the typeface. Некоторые шрифты имеют только FW_NORMAL, FW_REGULAR и FW_BOLD веса.Some fonts have only FW_NORMAL, FW_REGULAR, and FW_BOLD weights. Если указан FW_DONTCARE, используется вес по умолчанию.If FW_DONTCARE is specified, a default weight is used.

биталикbItalic
Указывает, является ли шрифт курсивом.Specifies whether the font is italic.

бундерлинеbUnderline
Указывает, является ли шрифт подчеркнутым.Specifies whether the font is underlined.

кстрикеаутcStrikeOut
Указывает, являются ли символы в шрифте зачеркнутым. Задает зачеркивание шрифта, если задано ненулевое значение.Specifies whether characters in the font are struck out. Specifies a strikeout font if set to a nonzero value.

Тип nCharnCharSet
Указывает, что набор символов шрифта является lfCharSet членом LOGFONT структуры в Windows SDK для списка значений.Specifies the font's character setSee the lfCharSet member in the LOGFONT structure in the Windows SDK for a list of values.

Набор символов OEM зависит от системы.The OEM character set is system-dependent.

В системе могут существовать шрифты с другими наборами символов.Fonts with other character sets may exist in the system. Приложение, использующее шрифт с неизвестным набором символов, не должно пытаться преобразовать или интерпретировать строки, которые должны быть отображены с этим шрифтом.An application that uses a font with an unknown character set must not attempt to translate or interpret strings that are to be rendered with that font. Вместо этого строки должны передаваться непосредственно в драйвер выходного устройства.Instead, the strings should be passed directly to the output device driver.

Средство сопоставления шрифтов не использует значение DEFAULT_CHARSET.The font mapper does not use the DEFAULT_CHARSET value. Приложение может использовать это значение, чтобы разрешить имя и размер шрифта для полного описания логического шрифта.An application can use this value to allow the name and size of a font to fully describe the logical font. Если шрифт с указанным именем не существует, для указанного шрифта можно заменить шрифт из любой кодировки.If a font with the specified name does not exist, a font from any character set can be substituted for the specified font. Чтобы избежать непредвиденных результатов, приложения должны использовать значение DEFAULT_CHARSET экономно.To avoid unexpected results, applications should use the DEFAULT_CHARSET value sparingly.

наутпреЦисионnOutPrecision
Задает желаемую точность вывода.Specifies the desired output precision. Точность вывода определяет, насколько близко выходные данные должны совпадать с высотой, шириной, ориентацией символов, escape-символом и шагом.The output precision defines how closely the output must match the requested font's height, width, character orientation, escapement, and pitch. lfOutPrecision LOGFONT Список значений и дополнительные сведения см. в элементе структуры в Windows SDK.See the lfOutPrecision member in the LOGFONT structure in the Windows SDK for a list of values and more information.

нклиппреЦисионnClipPrecision
Задает нужную точность обрезки.Specifies the desired clipping precision. Точность обрезки определяет, как обрезать символы, находящиеся частично за пределами области обрезки.The clipping precision defines how to clip characters that are partially outside the clipping region. Список значений см. в описании lfClipPrecision элемента в LOGFONT структуре Windows SDK.See the lfClipPrecision member in the LOGFONT structure in the Windows SDK for a list of values.

Чтобы использовать внедренный шрифт, предназначенный только для чтения, приложение должно указать CLIP_ENCAPSULATE.To use an embedded read-only font, an application must specify CLIP_ENCAPSULATE.

Чтобы обеспечить согласованное вращение шрифтов устройства, TrueType и векторов, приложение может использовать оператор OR для объединения CLIP_LH_ANGLES значения с любым другим значением нклиппреЦисион .To achieve consistent rotation of device, TrueType, and vector fonts, an application can use the OR operator to combine the CLIP_LH_ANGLES value with any of the other nClipPrecision values. Если установлен бит CLIP_LH_ANGLES, поворот для всех шрифтов зависит от того, является ли ориентация системы координат левой или правой.If the CLIP_LH_ANGLES bit is set, the rotation for all fonts depends on whether the orientation of the coordinate system is left-handed or right-handed. (Дополнительные сведения о ориентации систем координат см. в описании параметра нориентатион .) Если параметр CLIP_LH_ANGLES не установлен, шрифты устройства всегда поворачиваются против часовой стрелки, но поворот других шрифтов зависит от ориентации системы координат.(For more information about the orientation of coordinate systems, see the description of the nOrientation parameter.) If CLIP_LH_ANGLES is not set, device fonts always rotate counterclockwise, but the rotation of other fonts is dependent on the orientation of the coordinate system.

нкуалитиnQuality
Задает качество вывода шрифта, которое определяет, насколько аккуратно GDI должна пытаться сопоставить атрибуты логического шрифта с теми, которые соответствуют фактическому физическому шрифту.Specifies the font's output quality, which defines how carefully the GDI must attempt to match the logical-font attributes to those of an actual physical font. Список значений см. в описании lfQuality элемента в LOGFONT структуре Windows SDK.See the lfQuality member in the LOGFONT structure in the Windows SDK for a list of values.

нпитчандфамилиnPitchAndFamily
Указывает шаг и семейство шрифтов.Specifies the pitch and family of the font. lfPitchAndFamily LOGFONT Список значений и дополнительные сведения см. в элементе структуры в Windows SDK.See the lfPitchAndFamily member in the LOGFONT structure in the Windows SDK for a list of values and more information.

lpszFacenamelpszFacename
CStringУказатель или на строку, завершающуюся нулем, которая указывает имя гарнитуры шрифта.A CString or pointer to a null-terminated string that specifies the typeface name of the font. Длина этой строки не должна превышать 30 символов.The length of this string must not exceed 30 characters. Функцию Windows EnumFontFamilies можно использовать для перечисления всех доступных в настоящее время шрифтов.The Windows EnumFontFamilies function can be used to enumerate all currently available fonts. Если лпсзфаценаме имеет значение null, GDI использует независимую от устройства гарнитуру.If lpszFacename is NULL, the GDI uses a device-independent typeface.

Возвращаемое значениеReturn Value

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.Nonzero if successful; otherwise 0.

КомментарииRemarks

Шрифт можно затем выбрать в качестве шрифта для любого контекста устройства.The font can subsequently be selected as the font for any device context.

CreateFontФункция не создает новый шрифт Windows GDI.The CreateFont function does not create a new Windows GDI font. Он просто выбирает ближайшее соответствие между физическими шрифтами, доступными для GDI.It merely selects the closest match from the physical fonts available to the GDI.

При создании логического шрифта приложения могут использовать параметры по умолчанию для большинства параметров.Applications can use the default settings for most parameters when creating a logical font. Параметры, которым всегда должны быть предоставлены конкретные значения: нхеигхт и лпсзфаценаме.The parameters that should always be given specific values are nHeight and lpszFacename. Если нхеигхт и лпсзфаценаме не заданы приложением, то создаваемый логический шрифт зависит от устройства.If nHeight and lpszFacename are not set by the application, the logical font that is created is device-dependent.

По завершении работы с CFont объектом, созданным CreateFont функцией, используйте CDC::SelectObject для выбора другого шрифта в контексте устройства, а затем удалите CFont объект, который больше не нужен.When you finish with the CFont object created by the CreateFont function, use CDC::SelectObject to select a different font into the device context, then delete the CFont object that is no longer needed.

ПримерExample

// 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();

Кфонт:: CreateFontIndirectCFont::CreateFontIndirect

Инициализирует CFont объект с характеристиками, заданными в структуре LOGFONT.Initializes a CFont object with the characteristics given in a LOGFONTstructure.

BOOL CreateFontIndirect(const LOGFONT* lpLogFont);

ПараметрыParameters

лплогфонтlpLogFont
Указывает на LOGFONT структуру, определяющую характеристики логического шрифта.Points to a LOGFONT structure that defines the characteristics of the logical font.

Возвращаемое значениеReturn Value

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.Nonzero if successful; otherwise 0.

КомментарииRemarks

Шрифт можно затем выбрать в качестве текущего шрифта для любого устройства.The font can subsequently be selected as the current font for any device.

Этот шрифт имеет характеристики, указанные в структуре LOGFONT .This font has the characteristics specified in the LOGFONT structure. Если шрифт выбран с помощью функции-члена CDC:: SelectObject , средство СОПОСТАВЛЕНИЯ шрифтов GDI пытается сопоставить логический шрифт с существующим физическим шрифтом.When the font is selected by using the CDC::SelectObject member function, the GDI font mapper attempts to match the logical font with an existing physical font. Если средству сопоставления шрифтов не удается найти точное соответствие для логического шрифта, то он предоставляет альтернативный шрифт, характеристики которого соответствуют максимально возможное количество запрошенных характеристик.If the font mapper fails to find an exact match for the logical font, it provides an alternative font whose characteristics match as many of the requested characteristics as possible.

Если CFont объект, созданный функцией, больше не нужен CreateFontIndirect , используйте CDC::SelectObject для выбора другого шрифта в контексте устройства, а затем удалите CFont объект, который больше не нужен.When you no longer need the CFont object created by the CreateFontIndirect function, use CDC::SelectObject to select a different font into the device context, then delete the CFont object that is no longer needed.

ПримерExample

// 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

Эта функция предоставляет простой способ создания шрифта указанной гарнитуры и кегля.This function provides a simple way to create a font of a specified typeface and point size.

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

ПараметрыParameters

нпоинтсизеnPointSize
Запрошенная высота шрифта в десятых долях точки.Requested font height in tenths of a point. (Например, передайте 120, чтобы запросить 12-точечный шрифт.)(For instance, pass 120 to request a 12-point font.)

лпсзфаценамеlpszFaceName
CStringУказатель или на строку, завершающуюся нулем, которая указывает имя гарнитуры шрифта.A CString or pointer to a null-terminated string that specifies the typeface name of the font. Длина этой строки не должна превышать 30 символов.The length of this string must not exceed 30 characters. Функцию Windows "EnumFontFamilies" можно использовать для перечисления всех доступных в настоящее время шрифтов.The Windows `EnumFontFamilies function can be used to enumerate all currently available fonts. Если лпсзфаценаме имеет значение null, GDI использует независимую от устройства гарнитуру.If lpszFaceName is NULL, the GDI uses a device-independent typeface.

ХозяинpDC
Указатель на объект CDC , который будет использоваться для преобразования высоты в нпоинтсизе в логические единицы.Pointer to the CDC object to be used to convert the height in nPointSize to logical units. Если значение равно NULL, для преобразования используется контекст устройства экрана.If NULL, a screen device context is used for the conversion.

Возвращаемое значениеReturn Value

Ненулевое значение в случае успеха; в противном случае — 0Nonzero if successful, otherwise 0.

КомментарииRemarks

Она автоматически преобразует высоту в нпоинтсизе в логические единицы с помощью объекта CDC, на который указывает PDC.It automatically converts the height in nPointSize to logical units using the CDC object pointed to by pDC.

По завершении работы с CFont объектом, созданным CreatePointFont функцией, сначала выберите шрифт из контекста устройства, а затем удалите CFont объект.When you finish with the CFont object created by the CreatePointFont function, first select the font out of the device context, then delete the CFont object.

ПримерExample

// 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

Эта функция аналогична CreateFontIndirect за исключением того, что lfHeight член класса LOGFONT интерпретируется в десятых долях точки, а не в единицах устройства.This function is the same as CreateFontIndirect except that the lfHeight member of the LOGFONT is interpreted in tenths of a point rather than device units.

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

ПараметрыParameters

лплогфонтlpLogFont
Указывает на структуру LOGFONT , определяющую характеристики логического шрифта.Points to a LOGFONT structure that defines the characteristics of the logical font. lfHeightЭлемент LOGFONT структуры измеряется в десятых долях точки, а не на логических единицах.The lfHeight member of the LOGFONT structure is measured in tenths of a point rather than logical units. (Например, значение lfHeight 120, чтобы запросить 12-точечный шрифт.)(For instance, set lfHeight to 120 to request a 12-point font.)

ХозяинpDC
Указатель на объект CDC , который будет использоваться для преобразования высоты в lfHeight логические единицы.Pointer to the CDC object to be used to convert the height in lfHeight to logical units. Если значение равно NULL, для преобразования используется контекст устройства экрана.If NULL, a screen device context is used for the conversion.

Возвращаемое значениеReturn Value

Ненулевое значение в случае успеха; в противном случае — 0Nonzero if successful, otherwise 0.

КомментарииRemarks

Эта функция автоматически преобразует высоту в lfHeight логические устройства с помощью объекта CDC, на который указывает PDC , перед передачей LOGFONT структуры в Windows.This function automatically converts the height in lfHeight to logical units using the CDC object pointed to by pDC before passing the LOGFONT structure on to Windows.

По завершении работы с CFont объектом, созданным CreatePointFontIndirect функцией, сначала выберите шрифт из контекста устройства, а затем удалите CFont объект.When you finish with the CFont object created by the CreatePointFontIndirect function, first select the font out of the device context, then delete the CFont object.

ПримерExample

// 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();

Кфонт:: FromHandleCFont::FromHandle

Возвращает указатель на CFont объект при наличии обработчика хфонт для объекта шрифта Windows GDI.Returns a pointer to a CFont object when given an HFONT handle to a Windows GDI font object.

static CFont* PASCAL FromHandle(HFONT hFont);

ПараметрыParameters

хфонтhFont
Маркер ХФОНТ для шрифта Windows.An HFONT handle to a Windows font.

Возвращаемое значениеReturn Value

Указатель на объект в случае CFont успеха; в противном случае — null.A pointer to a CFont object if successful; otherwise NULL.

КомментарииRemarks

Если CFont объект еще не присоединен к обработчику, CFont создается и прикрепляется временный объект.If a CFont object is not already attached to the handle, a temporary CFont object is created and attached. Этот временный CFont объект действителен только до тех пор, пока приложение не найдет время простоя в цикле событий, во время которого все временные графические объекты будут удалены.This temporary CFont object is valid only until the next time the application has idle time in its event loop, at which time all temporary graphic objects are deleted. Другой способ сказать, что временный объект действителен только во время обработки одного сообщения окна.Another way of saying this is that the temporary object is valid only during the processing of one window message.

ПримерExample

// 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

Вызовите эту функцию, чтобы получить копию LOGFONT структуры для CFont .Call this function to retrieve a copy of the LOGFONT structure for CFont.

int GetLogFont(LOGFONT* pLogFont);

ПараметрыParameters

плогфонтpLogFont
Указатель на структуру LOGFONT для получения сведений о шрифте.Pointer to the LOGFONT structure to receive the font information.

Возвращаемое значениеReturn Value

Ненулевое значение, если функция выполнена; в противном случае — 0.Nonzero if the function succeeds, otherwise 0.

ПримерExample

// 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);
}

Кфонт:: operator ХФОНТCFont::operator HFONT

Этот оператор используется для получения маркера Windows GDI шрифта, присоединенного к CFont объекту.Use this operator to get the Windows GDI handle of the font attached to the CFont object.

operator HFONT() const;

Возвращаемое значениеReturn Value

Маркер объекта шрифта Windows GDI, присоединенный к, CFont если он успешно выполнен; в противном случае — null.The handle of the Windows GDI font object attached to CFont if successful; otherwise NULL.

КомментарииRemarks

Так как этот оператор автоматически используется для преобразования из CFont в шрифты и текст, можно передать CFont объекты в функции, которые предполагают хфонтс.Since this operator is automatically used for conversions from CFont to Fonts and Text, you can pass CFont objects to functions that expect HFONTs.

Дополнительные сведения об использовании графических объектов см. в разделе графические объекты в Windows SDK.For more information about using graphic objects, see Graphic Objects in the Windows SDK.

ПримерExample

// 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();

См. также разделSee also

Пример MFC для примера HIERSVRMFC Sample HIERSVR
Класс КгдиобжектCGdiObject Class
Иерархическая диаграммаHierarchy Chart