CFontDialog Class
Allows you to incorporate a font-selection dialog box into your application.
Syntax
class CFontDialog : public CCommonDialog
Members
Public Constructors
Name | Description |
---|---|
CFontDialog::CFontDialog | Constructs a CFontDialog object. |
Public Methods
Name | Description |
---|---|
CFontDialog::DoModal | Displays the dialog and allows the user to make a selection. |
CFontDialog::GetCharFormat | Retrieves the character formatting of the selected font. |
CFontDialog::GetColor | Returns the color of the selected font. |
CFontDialog::GetCurrentFont | Assigns the characteristics of the currently selected font to a LOGFONT structure. |
CFontDialog::GetFaceName | Returns the face name of the selected font. |
CFontDialog::GetSize | Returns the point size of the selected font. |
CFontDialog::GetStyleName | Returns the style name of the selected font. |
CFontDialog::GetWeight | Returns the weight of the selected font. |
CFontDialog::IsBold | Determines whether the font is bold. |
CFontDialog::IsItalic | Determines whether the font is italic. |
CFontDialog::IsStrikeOut | Determines whether the font is displayed with strikeout. |
CFontDialog::IsUnderline | Determines whether the font is underlined. |
Public Data Members
Name | Description |
---|---|
CFontDialog::m_cf | A structure used to customize a CFontDialog object. |
Remarks
A CFontDialog
object is a dialog box with a list of fonts that are currently installed in the system. The user can select a particular font from the list, and this selection is then reported back to the application.
To construct a CFontDialog
object, use the provided constructor or derive a new subclass and use your own custom constructor.
Once a CFontDialog
object has been constructed, you can use the m_cf
structure to initialize the values or states of controls in the dialog box. The m_cf structure is of type CHOOSEFONT. For more information on this structure, see the Windows SDK.
After initializing the dialog object's controls, call the DoModal
member function to display the dialog box and allow the user to select a font. DoModal
returns whether the user selected the OK (IDOK) or Cancel (IDCANCEL) button.
If DoModal
returns IDOK, you can use one of CFontDialog
's member functions to retrieve the information input by the user.
You can use the Windows CommDlgExtendedError function to determine whether an error occurred during initialization of the dialog box and to learn more about the error. For more information on this function, see the Windows SDK.
CFontDialog
relies on the COMMDLG.DLL file that ships with Windows versions 3.1 and later.
To customize the dialog box, derive a class from CFontDialog
, provide a custom dialog template, and add a message-map to process the notification messages from the extended controls. Any unprocessed messages should be passed to the base class.
Customizing the hook function is not required.
For more information on using CFontDialog
, see Common Dialog Classes.
Inheritance Hierarchy
CFontDialog
Requirements
Header: afxdlgs.h
CFontDialog::CFontDialog
Constructs a CFontDialog
object.
CFontDialog(
LPLOGFONT lplfInitial = NULL,
DWORD dwFlags = CF_EFFECTS | CF_SCREENFONTS,
CDC* pdcPrinter = NULL,
CWnd* pParentWnd = NULL);
CFontDialog(
const CHARFORMAT& charformat,
DWORD dwFlags = CF_SCREENFONTS,
CDC* pdcPrinter = NULL,
CWnd* pParentWnd = NULL);
Parameters
plfInitial
A pointer to a LOGFONT data structure that allows you to set some of the font's characteristics.
charFormat
A pointer to a CHARFORMAT data structure that allows you to set some of the font's characteristics in a rich edit control.
dwFlags
Specifies one or more choose-font flags. One or more preset values can be combined using the bitwise OR operator. If you modify the m_cf.Flag
s structure member, be sure to use a bitwise OR operator in your changes to keep the default behavior intact. For details on each of these flags, see the description of the CHOOSEFONT structure in the Windows SDK.
pdcPrinter
A pointer to a printer-device context. If supplied, this parameter points to a printer-device context for the printer on which the fonts are to be selected.
pParentWnd
A pointer to the font dialog box's parent or owner window.
Remarks
Note that the constructor automatically fills in the members of the CHOOSEFONT
structure. You should only change these if you want a font dialog different than the default.
Note
The first version of this function only exists when there is no rich edit control support.
Example
// Show the font dialog with all the default settings.
CFontDialog dlg;
dlg.DoModal();
// Show the font dialog with 12 point "Times New Roman" as the
// selected font.
LOGFONT lf;
memset(&lf, 0, sizeof(LOGFONT));
CClientDC dc(this); // expects a CWnd that has already been initialized
lf.lfHeight = -MulDiv(12, dc.GetDeviceCaps(LOGPIXELSY), 72);
_tcscpy_s(lf.lfFaceName, LF_FACESIZE, _T("Times New Roman"));
CFontDialog fdlg(&lf);
fdlg.DoModal();
CFontDialog::DoModal
Call this function to display the Windows common font dialog box and allow the user to choose a font.
virtual INT_PTR DoModal();
Return Value
IDOK or IDCANCEL. If IDCANCEL is returned, call the Windows CommDlgExtendedError function to determine whether an error occurred.
IDOK and IDCANCEL are constants that indicate whether the user selected the OK or Cancel button.
Remarks
If you want to initialize the various font dialog controls by setting members of the m_cf structure, you should do this before calling DoModal
, but after the dialog object is constructed.
If DoModal
returns IDOK, you can call other member functions to retrieve the settings or information input by the user into the dialog box.
Example
See the examples for CFontDialog::CFontDialog and CFontDialog::GetColor.
CFontDialog::GetCharFormat
Retrieves the character formatting of the selected font.
void GetCharFormat(CHARFORMAT& cf) const;
Parameters
cf
A CHARFORMAT structure containing information about the character formatting of the selected font.
CFontDialog::GetColor
Call this function to retrieve the selected font color.
COLORREF GetColor() const;
Return Value
The color of the selected font.
Example
// Get the color of the selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
COLORREF color = dlg.GetColor();
TRACE(_T("Color of the selected font = %8x\n"), color);
}
CFontDialog::GetCurrentFont
Call this function to assign the characteristics of the currently selected font to the members of a LOGFONT structure.
void GetCurrentFont(LPLOGFONT lplf);
Parameters
lplf
A pointer to a LOGFONT
structure.
Remarks
Other CFontDialog
member functions are provided to access individual characteristics of the current font.
If this function is called during a call to DoModal, it returns the current selection at the time (what the user sees or has changed in the dialog). If this function is called after a call to DoModal
(only if DoModal
returns IDOK), it returns what the user actually selected.
Example
// Get the characteristics of the currently selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
LOGFONT lf;
dlg.GetCurrentFont(&lf);
TRACE(_T("Face name of the selected font = %s\n"), lf.lfFaceName);
}
CFontDialog::GetFaceName
Call this function to retrieve the face name of the selected font.
CString GetFaceName() const;
Return Value
The face name of the font selected in the CFontDialog
dialog box.
Example
// Get the face name of the selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
CString facename = dlg.GetFaceName();
TRACE(_T("Face name of the selected font = %s\n"), facename);
}
CFontDialog::GetSize
Call this function to retrieve the size of the selected font.
int GetSize() const;
Return Value
The font's size, in tenths of a point.
Example
// Get the size of the selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
int size = dlg.GetSize();
TRACE(_T("The size of the selected font = %d\n"), size);
}
CFontDialog::GetStyleName
Call this function to retrieve the style name of the selected font.
CString GetStyleName() const;
Return Value
The style name of the font.
Example
// Get the style name of the selected font, if any.
CFontDialog dlg;
dlg.m_cf.Flags |= CF_USESTYLE;
if (dlg.DoModal() == IDOK)
{
CString stylename = dlg.GetStyleName();
TRACE(_T("Style name of the selected font = %s\n"), stylename);
}
CFontDialog::GetWeight
Call this function to retrieve the weight of the selected font.
int GetWeight() const;
Return Value
The weight of the selected font.
Remarks
For more information on the weight of a font, see CFont::CreateFont.
Example
// Get the weight of the selected font, if any.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
int weight = dlg.GetWeight();
TRACE(_T("Weight of the selected font = %d\n"), weight);
}
CFontDialog::IsBold
Call this function to determine if the selected font is bold.
BOOL IsBold() const;
Return Value
Nonzero if the selected font has the Bold characteristic enabled; otherwise 0.
Example
// Is the selected font bold?
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
BOOL bold = dlg.IsBold();
TRACE(_T("Is the selected font bold? %d\n"), bold);
}
CFontDialog::IsItalic
Call this function to determine if the selected font is italic.
BOOL IsItalic() const;
Return Value
Nonzero if the selected font has the Italic characteristic enabled; otherwise 0.
Example
// Is the selected font italic?
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
BOOL italic = dlg.IsItalic();
TRACE(_T("Is the selected font italic? %d\n"), italic);
}
CFontDialog::IsStrikeOut
Call this function to determine if the selected font is displayed with strikeout.
BOOL IsStrikeOut() const;
Return Value
Nonzero if the selected font has the Strikeout characteristic enabled; otherwise 0.
Example
// Is the selected font displayed with strikeout?
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
BOOL strikeout = dlg.IsStrikeOut();
TRACE(_T("Is the selected font strikeout? %d\n"), strikeout);
}
CFontDialog::IsUnderline
Call this function to determine if the selected font is underlined.
BOOL IsUnderline() const;
Return Value
Nonzero if the selected font has the Underline characteristic enabled; otherwise 0.
Example
// Is the selected font underlined?
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
BOOL underline = dlg.IsUnderline();
TRACE(_T("Is the selected font underlined? %d\n"), underline);
}
CFontDialog::m_cf
A structure whose members store the characteristics of the dialog object.
CHOOSEFONT m_cf;
Remarks
After constructing a CFontDialog
object, you can use m_cf
to modify various aspects of the dialog box before calling the DoModal
member function. For more information on this structure, see CHOOSEFONT in the Windows SDK.
Example
// The code fragment creates a font based on the information
// we got from CFontDialog::m_cf variable.
CFontDialog dlg;
if (dlg.DoModal() == IDOK)
{
// Create the font using the selected font from CFontDialog.
LOGFONT lf;
memcpy(&lf, dlg.m_cf.lpLogFont, sizeof(LOGFONT));
CFont font;
VERIFY(font.CreateFontIndirect(&lf));
// 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();
}