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
的详细信息,请参阅通用对话框类。
继承层次结构
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::CFontDialog 和 CFontDialog::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();
}