CFontDialog 类

允许将字体选择对话框合并到应用程序。

语法

class CFontDialog : public CCommonDialog

成员

公共构造函数

名称 描述
CFontDialog::CFontDialog 构造 CFontDialog 对象。

公共方法

名称 描述
CFontDialog::DoModal 显示对话框并允许用户做出选择。
CFontDialog::GetCharFormat 检索选定字体的字符格式设置。
CFontDialog::GetColor 返回选定字体的颜色。
CFontDialog::GetCurrentFont 将当前选定字体的特征分配给 LOGFONT 结构。
CFontDialog::GetFaceName 返回选定字体的字体名称。
CFontDialog::GetSize 返回选定字体的磅值。
CFontDialog::GetStyleName 返回选定字体的样式名称。
CFontDialog::GetWeight 返回选定字体的粗细。
CFontDialog::IsBold 确定字体是否为粗体。
CFontDialog::IsItalic 确定字体是否为斜体。
CFontDialog::IsStrikeOut 确定字体是否带删除线显示。
CFontDialog::IsUnderline 确定字体是否带下划线。

公共数据成员

“属性” 描述
CFontDialog::m_cf 用于自定义 CFontDialog 对象的结构。

注解

CFontDialog 对象是一个对话框,其中包含当前安装在系统中的字体列表。 用户可以从列表中选择特定字体,然后将选定内容报告回应用程序。

若要构造 CFontDialog 对象,请使用提供的构造函数,或派生一个新子类并使用自己的自定义构造函数。

构造 CFontDialog 对象后,可以使用 m_cf 结构来初始化对话框中控件的值或状态。 m_cf 结构的类型为 CHOOSEFONT。 有关此结构的详细信息,请参阅 Windows SDK。

初始化对话框对象的控件后,调用 DoModal 成员函数以显示对话框,并允许用户选择字体。 DoModal 返回用户选择了“确定”(IDOK) 还是“取消”(IDCANCEL) 按钮。

如果 DoModal 返回 IDOK,可使用 CFontDialog 的成员函数之一来检索用户输入的信息。

可以使用 Windows CommDlgExtendedError 函数来确定对话框初始化期间是否发生了错误,并了解有关错误的详细信息。 有关此函数的详细信息,请参阅 Windows SDK。

CFontDialog 依赖于 Windows 3.1 和更高版本随附的 COMMDLG.DLL 文件。

若要自定义对话框,请从 CFontDialog 派生类,提供自定义对话框模板,并添加消息映射以处理来自扩展控件的通知消息。 任何未处理的消息都应传递给基类。

不需要自定义挂钩函数。

有关如何使用 CFontDialog 的详细信息,请参阅通用对话框类

继承层次结构

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFontDialog

要求

标头:afxdlgs.h

CFontDialog::CFontDialog

构造 CFontDialog 对象。

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

参数

plfInitial
一个指向 LOGFONT 数据结构的指针,该结构允许你设置字体的某些特征。

charFormat
一个指向 CHARFORMAT 数据结构的指针,该结构允许你在 Rich Edit 控件中设置字体的某些特征。

dwFlags
指定一个或多个用于选择字体的标记。 可以使用按位“OR”运算符对一个或多个预设值进行组合。 如果修改 m_cf.Flag 结构成员,请确保在更改中使用按位“OR”运算符以保持默认行为不变。 有关上述每个标记的详细信息,请参阅 Windows SDK 中的 CHOOSEFONT 结构说明。

pdcPrinter
一个指向打印机设备上下文的指针。 如果已提供此参数,它将指向要选择其字体的打印机的打印机设备上下文。

pParentWnd
一个指向字体对话框的父窗口或所有者窗口的指针。

备注

请注意,构造函数将自动填充 CHOOSEFONT 结构的成员。 仅在要让字体对话框不同于默认字体对话框时,才应该更改这些内容。

注意

仅在不支持 Rich Edit 控件时,才存在此函数的第一个版本。

示例

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

调用此函数可显示 Windows 通用字体对话框并允许用户选择字体。

virtual INT_PTR DoModal();

返回值

IDOK 或 IDCANCEL。 如果返回 IDCANCEL,请调用 Windows CommDlgExtendedError 函数以确定是否发生了错误。

IDOK 和 IDCANCEL 是常量,指示用户选择的是“确定”还是“取消”按钮。

注解

如果要通过设置 m_cf 结构的成员来初始化各种字体对话框控件,应在调用 DoModal 之前但在构造对话框对象之后执行此操作。

如果 DoModal 返回 IDOK,可以调用其他成员函数来检索用户在对话框中输入的设置或信息。

示例

请参阅 CFontDialog::CFontDialogCFontDialog::GetColor 的示例。

CFontDialog::GetCharFormat

检索选定字体的字符格式设置。

void GetCharFormat(CHARFORMAT& cf) const;

参数

cf
一个 CHARFORMAT 结构,其中包含有关选定字体的字符格式设置信息。

CFontDialog::GetColor

调用此函数可检索选定字体的颜色。

COLORREF GetColor() const;

返回值

选定字体的颜色。

示例

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

调用此函数将当前选定字体的特征分配给 LOGFONT 结构的成员。

void GetCurrentFont(LPLOGFONT lplf);

参数

lplf
指向 LOGFONT 结构的指针。

备注

提供了其他 CFontDialog 成员函数来访问当前字体的各个特征。

如果在调用 DoModal 期间调用此函数,它将返回当时选定的内容(用户在对话框中看到或更改的内容)。 如果在调用 DoModal 之后调用此函数(仅当 DoModal 返回 IDOK 时),它将返回用户实际选择的内容。

示例

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

调用此函数可检索选定字体的字体名称。

CString GetFaceName() const;

返回值

CFontDialog 对话框中选定字体的字体名称。

示例

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

调用此函数可检索选定字体的大小。

int GetSize() const;

返回值

字体的大小(以十分之一磅表示)。

示例

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

调用此函数可检索选定字体的样式名称。

CString GetStyleName() const;

返回值

字体的样式名称。

示例

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

调用此函数可检索选定字体的粗细。

int GetWeight() const;

返回值

选定字体的粗细。

备注

有关字体粗细的详细信息,请参阅 CFont::CreateFont

示例

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

调用此函数以确定选定字体是否为粗体。

BOOL IsBold() const;

返回值

如果选定字体启用了粗体特征,则为非零值;否则为 0。

示例

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

调用此函数以确定选定字体是否为斜体。

BOOL IsItalic() const;

返回值

如果选定字体启用了斜体特征,则为非零;否则为 0。

示例

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

调用此函数以确定选定字体是否带删除线显示。

BOOL IsStrikeOut() const;

返回值

如果选定字体启用了删除线特征,则为非零值;否则为 0。

示例

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

调用此函数以确定选定字体是否带下划线。

BOOL IsUnderline() const;

返回值

如果选定字体启用了下划线特征,则为非零;否则为 0。

示例

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

一个结构,其成员存储对话框对象的特征。

CHOOSEFONT m_cf;

备注

构造 CFontDialog 对象后,可以在调用 DoModal 成员函数之前使用 m_cf 来修改对话框的各个方面。 有关此结构的详细信息,请参阅 Windows SDK 中的 CHOOSEFONT

示例

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

另请参阅

MFC 示例 HIERSVR
CCommonDialog 类
层次结构图