CFontHolder Class

Implements the stock Font property and encapsulates the functionality of a Windows font object and the IFont interface.

Syntax

class CFontHolder

Members

Public Constructors

Name Description
CFontHolder::CFontHolder Constructs a CFontHolder object.

Public Methods

Name Description
CFontHolder::GetDisplayString Retrieves the string displayed in a container's property browser.
CFontHolder::GetFontDispatch Returns the font's IDispatch interface.
CFontHolder::GetFontHandle Returns a handle to a Windows font.
CFontHolder::InitializeFont Initializes a CFontHolder object.
CFontHolder::QueryTextMetrics Retrieves information for the related font.
CFontHolder::ReleaseFont Disconnects the CFontHolder object from the IFont and IFontNotification interfaces.
CFontHolder::Select Selects a font resource into a device context.
CFontHolder::SetFont Connects the CFontHolder object to an IFont interface.

Public Data Members

Name Description
CFontHolder::m_pFont A pointer to the CFontHolder object's IFont interface.

Remarks

CFontHolder does not have a base class.

Use this class to implement custom font properties for your control. For information on creating such properties, see the article ActiveX Controls: Using Fonts.

Inheritance Hierarchy

CFontHolder

Requirements

Header: afxctl.h

CFontHolder::CFontHolder

Constructs a CFontHolder object.

explicit CFontHolder(LPPROPERTYNOTIFYSINK pNotify);

Parameters

pNotify
Pointer to the font's IPropertyNotifySink interface.

Remarks

You must call InitializeFont to initialize the resulting object before using it.

CFontHolder::GetDisplayString

Retrieves a string that can be displayed in a container's property browser.

BOOL GetDisplayString(CString& strValue);

Parameters

strValue
Reference to the CString that is to hold the display string.

Return Value

Nonzero if the string is successfully retrieved; otherwise 0.

CFontHolder::GetFontDispatch

Call this function to retrieve a pointer to the font's dispatch interface.

LPFONTDISP GetFontDispatch();

Return Value

A pointer to the CFontHolder object's IFontDisp interface. Note that the function that calls GetFontDispatch must call IUnknown::Release on this interface pointer when done with it.

Remarks

Call InitializeFont before calling GetFontDispatch.

CFontHolder::GetFontHandle

Call this function to get a handle to a Windows font.

HFONT GetFontHandle();

HFONT GetFontHandle(
    long cyLogical,
    long cyHimetric);

Parameters

cyLogical
Height, in logical units, of the rectangle in which the control is drawn.

cyHimetric
Height, in MM_HIMETRIC units, of the control.

Return Value

A handle to the Font object; otherwise NULL.

Remarks

The ratio of cyLogical and cyHimetric is used to calculate the proper display size, in logical units, for the font's point size expressed in MM_HIMETRIC units:

Display size = ( cyLogical / cyHimetric) X font size

The version with no parameters returns a handle to a font sized correctly for the screen.

CFontHolder::InitializeFont

Initializes a CFontHolder object.

void InitializeFont(
    const FONTDESC* pFontDesc = NULL,
    LPDISPATCH pFontDispAmbient = NULL);

Parameters

pFontDesc
Pointer to a font description structure ( FONTDESC) that specifies the font's characteristics.

pFontDispAmbient
Pointer to the container's ambient Font property.

Remarks

If pFontDispAmbient is not NULL, the CFontHolder object is connected to a clone of the IFont interface used by the container's ambient Font property.

If pFontDispAmbient is NULL, a new Font object is created either from the font description pointed to by pFontDesc or, if pFontDesc is NULL, from a default description.

Call this function after constructing a CFontHolder object.

CFontHolder::m_pFont

A pointer to the CFontHolder object's IFont interface.

LPFONT m_pFont;

CFontHolder::QueryTextMetrics

Retrieves information on the physical font represented by the CFontHolder object.

void QueryTextMetrics(LPTEXTMETRIC lptm);

Parameters

lptm
A pointer to a TEXTMETRIC structure that will receive the information.

CFontHolder::ReleaseFont

This function disconnects the CFontHolder object from its IFont interface.

void ReleaseFont();

CFontHolder::Select

Call this function to select your control's font into the specified device context.

CFont* Select(
    CDC* pDC,
    long cyLogical,
    long cyHimetric);

Parameters

pDC
Device context into which the font is selected.

cyLogical
Height, in logical units, of the rectangle in which the control is drawn.

cyHimetric
Height, in MM_HIMETRIC units, of the control.

Return Value

A pointer to the font that is being replaced.

Remarks

See GetFontHandle for a discussion of the cyLogical and cyHimetric parameters.

CFontHolder::SetFont

Releases any existing font and connects the CFontHolder object to an IFont interface.

void SetFont(LPFONT pNewFont);

Parameters

pNewFont
Pointer to the new IFont interface.

See also

Hierarchy Chart
CPropExchange Class