字体对话框的使用
程序员文章站
2022-07-03 21:44:18
...
新建一个基于对话框的MFC应用程序FontDialogTest,删除对话框中原有控件。
添加一个按钮,名称上“设置字体”。
切换到类视图,双击CFontDialogTestDlg,为类CFontDialogTestDlg添加两个成员变量:
LOGFONT m_font;
COLORREF m_clr;
其中,m_font用来保存选择的字体,m_clr用来保存所选的字体颜色。
打开函数CFontDialogTestDlg::OnInitDialog(),在末尾return TRUE;前添加代码如下:
m_font.lfHeight=25;
m_font.lfWidth=0;
m_font.lfEscapement=0;
m_font.lfOrientation=0;
m_font.lfWeight=FW_NORMAL;
m_font.lfItalic=FALSE;
m_font.lfUnderline=FALSE;
m_font.lfStrikeOut=FALSE;
m_font.lfCharSet=GB2312_CHARSET;
m_font.lfOutPrecision=OUT_STROKE_PRECIS;
m_font.lfClipPrecision=CLIP_STROKE_PRECIS;
m_font.lfQuality=DRAFT_QUALITY;
m_font.lfPitchAndFamily=VARIABLE_PITCH|FF_MODERN;
_tcscpy(m_font.lfFaceName, _T("黑体"));
m_clr = RGB(0,0,255);
Invalidate();
这段代码主要初始化字体和颜色变量。
打开类CFontDialogTestDlg的成员函数OnPaint(),在else后面添加代码如下:
else
{
CPaintDC dc(this); // 用于绘制的设备上下文
CFont NewFont;
CFont *pOldFont;
NewFont.CreateFontIndirect(&m_font);
pOldFont = dc.SelectObject(&NewFont);
dc.SetTextColor(m_clr);
dc.TextOut(20,20,_T("你好,本例为字体对话框测试。"));
dc.SelectObject(pOldFont);
CDialogEx::OnPaint();
}
双击按钮,添加事件代码如下:
void CFontDialogTestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CFontDialog dlg;
dlg.m_cf.lpLogFont = &m_font;
dlg.m_cf.rgbColors = m_clr;
dlg.m_cf.Flags |= CF_INITTOLOGFONTSTRUCT;
if(dlg.DoModal()==IDOK)
{
dlg.GetCurrentFont(&m_font);
m_clr = dlg.GetColor();
Invalidate();
}
}
保存工程并运行,结果如图所示:
上一篇: QT文件对话框,颜色对话框、字体对话框、输入对话框的使用
下一篇: VBA进阶